嵌套函数调用速度与否?

Ram*_*ngh 3 c c++ compiler-construction optimization performance

我和朋友有这个愚蠢的争论,需要一个权威的话.

我有这两个片段,想知道哪一个更快?[A或B]

(假设编译器没有优化任何东西)

[一个]

if ( foo () ); 
Run Code Online (Sandbox Code Playgroud)

[B]

int t = foo ();
if ( t )
Run Code Online (Sandbox Code Playgroud)

编辑:伙计们,这对你来说可能看起来很愚蠢,但我有一位硬件工程师朋友,他认为即使没有优化(采取任何处理器,任何编译器对),CASE B总是更快,因为它不会获取内存来自先前指令的结果,但通过绕过该数据直接访问公共数据总线的结果(记住5级流水线).

虽然我的论点是这样的,没有编译器通知要复制或检查多少数据,但是不可能这样做(你必须转到内存来获取数据,没有编译器优化)

Gre*_*ill 13

将[B]转换为[A]所需的"优化"是如此微不足道(特别是如果t不在其他任何地方使用),编译器可能甚至不会其称为优化.当然,无论是否明确启用优化,它都可能是它所做的事情.

要告诉的唯一方法是让编译器为两个代码位生成汇编源列表,然后比较它们.