gpt4 book ai didi

C++ 内联汇编优化

转载 作者:太空宇宙 更新时间:2023-11-04 16:06:21 27 4
gpt4 key购买 nike

为什么 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();
}

没有 _asm block ,操作时间始终为 0,因为循环被“跳过” 完全是由于编译器优化。使用 _asm block ,它只需要几秒钟。

是否有任何编译器标志可以优化内联汇编或由于某些不明原因不可能?

最佳答案

编译器并不真正理解内联汇编,因此假定它可以做任何事情。

当您特别想在低级别优化某些代码时,通常使用内联汇编。如果你这样做了,为什么你期望编译器进一步优化它?

关于C++ 内联汇编优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com