使用 GEANT4(大型 Monte Carlo C++ 模拟框架,大量共享库)运行模拟代码。使用黄金链接器和基于标准 BFD 的链接器编译并链接 GEANT 和我的应用程序。看起来黄金跑得更快一点(1'47" vs 1'51")。有人可以阐明造成差异的原因是什么吗? Ubuntu 15.04,64 位,GCC 4.9.2。每个测试运行大约 10 次,所用时间最少,没有其他活动,一个终端。
当然,不同的链接器会产生不同的结果,就像不同的编译器一样。结果主要取决于每个链接器上启用(和可用)的优化选项。以下是造成您看到的差异的一个可能原因,但可能还有许多其他原因:
-fipa-icf
对函数和只读变量执行相同的代码折叠。优化减少了代码大小并可能会干扰展开
通过用不同的函数替换等效函数来进行堆栈
姓名。链接时间优化更有效
启用优化。尽管如此,其行为与黄金相似
链接器 ICF 优化,GCC ICF 在不同层面上工作,因此
优化不一样 - 找到了等价的
仅由 GCC 提供且仅由 Gold 找到的等效项.
from: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
最后但并非最不重要的一点是:除了实际的二进制内容之外,还有许多环境因素会影响运行时。例如,缓存抖动会对执行时间产生相当大的影响。此外,10 次执行的集合对于统计结论来说太小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)