gpt4 book ai didi

c++ - 如何告诉 C++ 不要优化丢弃的表达式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:56 24 4
gpt4 key购买 nike

我想分析一系列矩阵运算,以了解它们需要多少时间。 (当我想起 CPU 处理指令的速度有多快时,我就不太愿意考虑优化了,呵呵)

for(int n = 0; n < times; ++n){
// scrambled to miss the cache on purpose
matrix[ rand()%matrixLen ] * matrix[ rand()%matrixLen ];
}

我的编译器一直在优化这个表达式。有没有办法让它实际执行这段代码,同时仍然保留所有其他优化?

最佳答案

您很可能需要使用#pragma。你如何做到这一点完全取决于编译器(抱歉),但在这个过程中有一定的共性:

// save your current options
#if SPEEDTEST
#pragma GCC push_options
#pragma GSS optimize("whatever the settings are")
#endif

// ... your code

// restore options
#if SPEEDTEST
#pragma GCC pop_options
#endif

或者在你的情况下:

#if SPEEDTEST
#pragma optimize("", off)
#endif

// ... your code

#if SPEEDTEST
#pragma optimize("", on)
#endif

注意:您不能在函数中使用某些#pragma 语句

关于c++ - 如何告诉 C++ 不要优化丢弃的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874114/

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