c.b*_*ear 0 c++ inline-assembly
为什么Visual Studio C++编译器默认情况下不会优化以下代码?
#include "ctime"
#include "iostream"
#define BIG_NUM 10000000000
int main() {
std::clock_t begin = clock();
for (unsigned long long i = 0; i < BIG_NUM; ++i) {
__asm
{
nop
}
}
std::clock_t end = clock();
std::cout << "time: " << double(end - begin) / CLOCKS_PER_SEC;
std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)
如果没有_asm块,则操作时间始终为0,因为由于编译器优化,完全"跳过"循环.使用该_asm块只需几秒钟.
是否有任何编译器标志来优化内联汇编或由于某些不明原因而无法实现?