编译器的一个细节问题
如果有一个函数void fn(int i);下面两种使用方法,编译器是怎么看待的呢?
(1)
fn(12345);
fn(12345);
fn(12345);
(2)
int tmp=12345;
fn(tmp);
fn(tmp);
fn(tmp);
两种方法哪个会效率比较高? 不知道,感觉应该是上一种比较快。期待正解 我觉得如果编译器有优化,应该没有差别! 我的感觉也是第一种代码效率要高一点,因为第二种代码在执行时还得分配一个空间给tmp,另外还有其他的一些操作,即使有代码的优化,这个优化也是要花费时间的,可能花费的时间很少,可以忽略吧!这只是我个人的看法,不知道对不对啊! 这么没有场景的比较没有意义。如果在同一函数域中,编译器会自动替换,那么运行效率一样。。。
如果远程调用,需要一个赋值过程,但是这个影响基本忽略。如果把注意力放在这儿,还不如放到其他可以优化的地方。 如果没有优化,第一种代码效率要高一点,如果做了优化,则效率一样.其实可以用gcc -S 和 gcc -O2 -S 看编译出来的汇编.
页:
[1]