是否有任何东西会影响相同代码的gcc构建?

是否有任何东西会影响相同代码的gcc构建?,gcc,Gcc,例如,我们有一些源代码。 相同源代码的相同GCC的两个不同构建为这个程序提供了不同的CPU负载 除了源代码和gcc选项之外,是否可能有其他因素会影响编译? 另外,我想这是一个愚蠢的问题,但无论如何……假设在gcc调用之间不更新系统的其余部分,gcc应该生成相同的可执行文件。您可以通过比较它们来检查情况是否如此: $ gcc ... $ mv my_program my_program.1 $ gcc ... $ cmp -l my_program.1 my_program 如果这不产生任何输出

例如,我们有一些源代码。 相同源代码的相同GCC的两个不同构建为这个程序提供了不同的CPU负载

除了源代码和gcc选项之外,是否可能有其他因素会影响编译?
另外,我想这是一个愚蠢的问题,但无论如何……

假设在gcc调用之间不更新系统的其余部分,gcc应该生成相同的可执行文件。您可以通过比较它们来检查情况是否如此:

$ gcc ...
$ mv my_program my_program.1
$ gcc ...
$ cmp -l my_program.1 my_program
如果这不产生任何输出,则可执行文件是相同的

然而,当您编写“CPU负载”时,您似乎指的是程序的运行时间,很多事情都会影响它。例如:

  • 来自其他进程的系统负载
  • 一天中的时间(随机数)
  • 内存布局(库地址随机化)

如果差异只有百分之几,那通常是由于测量精度有限。如果差异很大,我建议您使用档案器和/或发布有关您的计划的更多详细信息。

谢谢您的澄清。我确信应该是这样的,但我只是想问这个问题。