我刚刚测试了一个我正在工作的程序,当我使用 -g 编译它时,我发现它的执行速度提高了 3μs(统计上显着的变化)。这对我来说毫无意义——我认为 -g 标志不应该影响程序的执行,即使它影响了程序的执行,它也会让它运行得更慢,而不是更快。
谁能告诉我为什么会这样?它是否会改变程序的执行流程?我没有使用 -O 进行编译,因为我需要它完全按照编写的方式执行,但是如果 -g 可以通过更改指令顺序以某种方式使其运行得更快,我显然应该使用它。
所以我需要确切地知道 -g 标志对程序所做的更改。
编辑:我运行的测试越多,t 值就越大(= 差异在统计上越显着)。这绝对不是测量错误——有些事情正在发生。