两种运算写法的运行速度差异原理

学术版

SUNCHAOYI @ 2021-09-06 18:10:05

题目中做到 a %= 23a = a % 23,运行速度相同。答案是 false

运行实测了下发现确实有一定的差异,但不知道原理,求解答。


by cyffff @ 2021-09-06 18:20:56

我觉得一样,是波动吧


by ud2_ @ 2021-09-06 18:21:56

不说明语言?至少在 C++ 中完全没有区别。


by Tan_Wei_Ye @ 2021-09-06 18:58:07

@ud2_ 不说明环境?至少在楼主本地好像有区别。


by ud2_ @ 2021-09-07 00:43:07

那么楼主能分别编译这两份代码,然后看看对象文件有什么区别吗?

本地测试结果:

$ echo 'void fn(int& a) { a %= 23; }'    | c++ -x c++ -o a.o -c -
$ echo 'void fn(int& a) { a = a % 23; }' | c++ -x c++ -o b.o -c -
$ diff a.o b.o
$ 

|