|
|
1
3
根据我的经验,3.4是性能基本达到顶峰的地方;在我的项目中,4.2实际上比3.4慢,4.3是第一个大致等于3.4的性能。4.4略快于3.4。 我发现,在一些特定的情况下,较旧版本的gcc在代码中做了一些令人难以置信的延迟工作——有一个特定的函数,从3.4到4.3,从128个时钟到21个时钟,但这显然是一个特殊的情况(这是一个短循环,仅添加一些不必要的指令会严重影响性能)。 我个人使用3.4只是因为它编译速度更快,使测试速度更快。我也尽量避免使用最新版本,因为它们似乎有错误编写代码的坏习惯--例如,最新gcc版本上的march core2会在我的程序中导致segfaults,因为它会发出自动矢量化代码,试图对未对齐的地址执行对齐访问。 总体而言,尽管差异很少很大;3-5%是绝对值 最 我已经看到了性能的变化。 现在,注意这是C;C++中的东西可能不同。 |
|
|
2
2
我相信优化器是在gcc4系列中完全重新设计的。例如,有关矢量化,请参见本页: http://gcc.gnu.org/projects/tree-ssa/vectorization.html 关于信息,我曾经用动态数组、静态数组和std::vector做了一个c[I]=a[I]+b[I]的基准测试,其中std::vector最快(w/gcc 4.1)。30%的性能差异。 |
|
|
3
1
message on gcc mailing list ) 我打赌其他方面也有所改善。 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 1 年前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |