QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: cnhnln

大家贴一下自己使用的优化参数,好不好

[复制链接]
发表于 2005-7-24 14:34:37 | 显示全部楼层
me too, I used gcc 3.4.4 and then

CFLAGS="-O2 -march=pentium-m -fomit-frame-pointer -pipe -fforce-addr -fprefetch-loop-arrays -ftracer -funit-at-a-time"

CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"

and found no speedup at all compared to my
"-02 -mcpu=i686 -pipe -fomit-frame-pointer"
回复

使用道具 举报

发表于 2005-8-12 08:44:14 | 显示全部楼层
Barton的-march如何设置?
回复

使用道具 举报

 楼主| 发表于 2005-8-12 14:05:53 | 显示全部楼层
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=91776
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=93961
回复

使用道具 举报

发表于 2006-1-5 16:00:39 | 显示全部楼层
首先 GCC 所有的优化参数请仔细看这里:
http://www.magiclinux.org/people/kde/web/gcc.html#lbAO

注意:
-fomit-frame-pointer
这个参数已经包含于  -O, -O2, -O3, -Os,再使用就是脱裤子放屁。It also makes debugging impossible on some machines.

-funroll-loops
会对已知次数的循环进行解环、展开,这可能加快代码执行速度,也可能减慢代码执行速度,所以是一个极不可靠的优化参数。而且无论如何都会使生成的代码体积加大,有时非常庞大,故不推荐使用。

-fexpensive-optimizations
这个参数已经包含于 -O2

非常盲目!使用其他优化参数首先应查询它是否已经包含进了 -O1、-O2、-O3,如果已经包含进了你使用的优化级别,再指定就是多余的。


关于omit-frame-pointer:

"-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging."

只有在不影响调试的体系结构中-O选项才包含omit-frame-pointer参数。在x86的-O选项中是不包含这个参数的,因为它会使产生的代码无法调试,因此在大型软件中一般不应使用这个参数。对于非常成熟稳定的代码,使用这个参数进行优化也未尝不可。
回复

使用道具 举报

 楼主| 发表于 2006-1-11 16:05:00 | 显示全部楼层
哈哈哈,说不定人家“KDE”就喜欢不放屁也脱裤子  
回复

使用道具 举报

发表于 2006-1-11 17:57:12 | 显示全部楼层
GCC 4.1.0-beta20051230
[code:1]
CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -pipe -ftracer -fforce-addr"
CXXFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -pipe -ftracer -fforce-addr -fvisibility-inlines-hidden"
LDFLAGS="-Wl,-O1 -Wl,--sort-common"
[/code:1]
回复

使用道具 举报

发表于 2006-2-18 18:05:03 | 显示全部楼层
看我的,AMD64:
CFLAGS="-O3 -march=k8 -msse3 -pipe -fmove-all-movables -fpeel-loops -freduce-all-givs -mno-align-stringops -minline-all-stringops -mno-push-args -ftracer"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
MAKEOPTS="-j2"

这几个:-fmove-all-movables -fpeel-loops -freduce-all-givs -mno-align-stringops -minline-all-stringops -mno-push-args是软件得来的;
不是所有AMD64都支持sse3,而我的CPU核心支持,所以加了一个-msse3,还有,-ftracer是我看过一个牛人作的测评后加上去的,它的确对amd64优化有点用。

至于LDFLAGS,我用得比较保守,我不希望有些软件装不了,所以我这样用:
LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
不会有软件不能compile。

再说MAKEOPTS,AMD的U没有超线程,所以没必要设得太多,原则上CPU数量加一即可,所以:
MAKEOPTS="-j2"#当然双核心的例外,那就当两用,-j3

最后说一下CXXFLAGS,因为我的是gcc3.4,所以我没有加特别的优化,如果用gcc4.x的话可以设。
回复

使用道具 举报

 楼主| 发表于 2006-3-17 18:27:46 | 显示全部楼层
据说“-fvisibility-inlines-hidden -fvisibility=hidden”可以让c++写的代码编译出的程序更小更好
http://gcc.gnu.org/wiki/Visibility
回复

使用道具 举报

发表于 2006-3-17 21:32:09 | 显示全部楼层
我签名的怎样。。我还不不敢拿上去试试。不竟我是linux newbie

CFLAGS="-march=athlon-xp -m3dnow -msse -mfpmath=sse -mmmx -O3
-pipe -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop
-frerun-loop-opt -falign-functions=4 -maccumulate-outgoing-args -ffast-math
-fprefetch-loop-arrays"
CXXFLAGS="${CFLAGS}"
回复

使用道具 举报

发表于 2007-3-19 01:16:45 | 显示全部楼层
谁给一个xeon的?
回复

使用道具 举报

 楼主| 发表于 2007-3-19 11:16:49 | 显示全部楼层
服务器还用自己编译吗?如果需要也就用默认的就好了,rh应该是i686和O2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 00:28 , Processed in 0.060443 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表