gpt4 book ai didi

GCC,比较使用 -O2 和使用它打开的所有优化标志的效果

转载 作者:行者123 更新时间:2023-12-02 05:32:28 24 4
gpt4 key购买 nike

来自gcc5.4 documentation ,它说

-O2 turns on all optimization flags specified by -O. It also turns on the following optimization flags:

-fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps, etc

看起来,使用-O2对于测试程序的性能与使用gcc 5.4.0中-O2打开的所有83个优化标志具有相同的效果。

但是我对比了得到的可执行文件test1和test2的运行时间

gcc-5.4 -O2 test.c -o test1

gcc-5.4 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim ... -fthread-jumps -falign-functions ...(all the 83 flags) test.c -o test2

我对 20 个随机生成的 C 程序进行了测试,并运行每个测试用例 100000 次,以确保运行时间的测量足够准确。 但结果是,使用 -O2 比使用所有 83 个标志平均快 60% 左右。

我真的很困惑为什么使用 -O2 的效果并不等同于使用它打开的所有优化标志。

我一定是误会了什么,但我还找不到任何解释。我将不胜感激任何帮助。非常感谢。

最佳答案

这是一个常见的问题。为了启用(或禁用)特定优化,您必须首先启用一般优化器,即使用 -O... 标志之一,-O0 除外(或只是-O,相当于-O1)。

关于GCC,比较使用 -O2 和使用它打开的所有优化标志的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46433381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com