lms*_*lms 1 c architecture cpu optimization performance
什么是计算C中for循环内2个浮点数的最大值的有效方法,而不使用可能会使管道停止的逻辑语句,例如a > b ? a : b
?
我正在使用巨大的3D阵列并进行大量的循环迭代.
检查编译器输出的内容,它可能已经"最佳"了.例如,
float foo(float a, float b)
{
return (a>b?a:b);
}
Run Code Online (Sandbox Code Playgroud)
使用GCC 4.5编译,-O3
在x86_64上生成此程序集:
Disassembly of section .text:
0000000000000000 <foo>:
0: f3 0f 5f c1 maxss %xmm1,%xmm0
4: c3 retq
Run Code Online (Sandbox Code Playgroud)
即编译器对您所针对的指令集以及代码的语义有很多了解.让它完成它的工作.