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不在其他任何地方使用),编译器可能甚至不会将其称为优化.当然,无论是否明确启用优化,它都可能是它所做的事情.
要告诉的唯一方法是让编译器为两个代码位生成汇编源列表,然后比较它们.
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |