为什么gcc -o0比icc -o0快?

Kur*_*rru 1 c gcc icc

对于我要做的简短报告,我们的类使用gcc -O0和icc -O0在集群上运行代码.我们发现gcc比没有任何优化的icc快2.5倍?为什么是这样?gcc -O0实际上是做了一些小的优化,还是只是为了这个系统更好地工作?

代码是在这里找到的天真字符串搜索算法的实现,用c编写.

谢谢

Ste*_*non 6

-O0的表现并不重要或任何指示.它明确地说"我不关心性能",编译器会引导你; 它只做最简单的事情.通过随机运气,对于GCC而言,对于特定硬件配置中的一个高度特定的微基准测试而言,最简单的是ICC.如果你运行了100个其他微基准测试,你可能会发现一些ICC更快的地方.即使你没有,这仍然没有多大意义.如果你要比较不同的编译器的性能,打开优化,因为那是,如果你关心性能,你做什么.

如果您想了解为什么一个更快,请分析执行情况.执行时间在哪里?哪里有摊位?为什么会出现这些摊位?