gpt4 book ai didi

c++ - g++关闭基准测试的持续传播?

转载 作者:行者123 更新时间:2023-11-30 02:48:02 25 4
gpt4 key购买 nike

我想使用一些使用硬编码输入的函数调用运行 C++ 函数的简单基准测试。

inline Output simple_func_to_test(const Input input);

int main(int argc, char* argv[]) {
// The value of input is known at compile time.
const Input input;
// The value of output can be deduced at compile time.
Output output = simple_func_to_test(input);
}

我对汇编没有详细的了解,但通过检查使用 g++ 4.8 和 Ofast 生成的汇编,编译器似乎正在优化函数并在编译时评估输出值。例如,涉及乘法的 C++ 函数生成不执行乘法的程序集。

在上面的示例中,我希望在启用所有优化的情况下进行编译,除了输入的值应该被视为在编译时未知。

我如何更改 C++ 或将标志传递给 g++ 来执行此操作?

关于 gcc optimization flags page有大量与持续传播相关的标志。我已经迷失了所有这些的微妙之处和确切含义。

编辑:我没有兴趣完全关闭持续传播。我只希望输入在编译时被视为未知。

最佳答案

I want to simulate the case in which input is not known at compile time. I don't necessarily want to interfere with the compiler.

让系统不确定变量值的最简单方法是将其声明为volatile:

const volatile Input input;

它的值会在函数调用之前从内存中重新读取。函数内部不会受到干扰,否则将成为完全逼真的模拟。

关于c++ - g++关闭基准测试的持续传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288884/

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