Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 代码被编译器偷走了,我该如何规避它的犯罪方式_C++_Multithreading_Compiler Construction_For Loop_Compiler Optimization - Fatal编程技术网

C++ 代码被编译器偷走了,我该如何规避它的犯罪方式

C++ 代码被编译器偷走了,我该如何规避它的犯罪方式,c++,multithreading,compiler-construction,for-loop,compiler-optimization,C++,Multithreading,Compiler Construction,For Loop,Compiler Optimization,我想在工作中给一台新电脑的处理器增加压力。我认为一个很好的方法是为每个处理器打开一个具有以下功能的线程: void soStressful() { int j = 0; for (int i = 0; i < 10000; ++i) { j += i; } } void soStressful(){ int j=0; 对于(int i=0;i

我想在工作中给一台新电脑的处理器增加压力。我认为一个很好的方法是为每个处理器打开一个具有以下功能的线程:

void soStressful() {
    int j = 0;
    for (int i = 0; i < 10000; ++i) {
        j += i;
    }
}
void soStressful(){
int j=0;
对于(int i=0;i<10000;++i){
j+=i;
}
}
但由于某种原因,编译器会删除这些代码。(因为无论计算的复杂性或i的大小,程序都会立即运行),而且我们也记录了很少的cpu使用情况


如何停止编译器编译此代码?

尝试在变量上使用“”关键字。当然,这忽略了一个事实,那就是你需要做更多的工作来给你的电脑增加压力。您可能会觉得有用,不过我会非常认真地对待这段代码中的警告。

尝试在变量中使用“”关键字。当然,这忽略了一个事实,那就是你需要做更多的工作来给你的电脑增加压力。您可能会发现它很有用,不过我会非常认真地对待关于该代码的警告。

您的函数不接受任何输入,也不提供任何输出。因此编译器很容易发现它什么也不做

我建议在循环中修改一个全局变量,最好声明为volatile。那么编译器将无法假定它未被使用

此外,如果处理器速度很快,则需要超过10000次迭代循环才能获得有意义的CPU使用率


您可能需要查看一些基准测试代码—dhrystone就是其中之一。

您的函数不接受输入,也不提供输出。因此编译器很容易发现它什么也不做

我建议在循环中修改一个全局变量,最好声明为volatile。那么编译器将无法假定它未被使用

此外,如果处理器速度很快,则需要超过10000次迭代循环才能获得有意义的CPU使用率


您可能需要查看一些基准测试代码—dhrystone就是其中之一。

只需从函数返回
j
,并在调用者中对其进行处理即可。但这是一种给处理器施加压力的糟糕方式,因为它只加载处理器的一个非常有限的子集。根据您希望加载处理器的原因(您想确保它工作吗?您想尽可能多地加热它吗?),您应该选择一个专门设计的程序来做您想做的事情。是一个常见的函数。

只需从函数返回
j
,并在调用者中对其进行处理即可。但这是一种给处理器施加压力的糟糕方式,因为它只加载处理器的一个非常有限的子集。根据您希望加载处理器的原因(您想确保它工作吗?您想尽可能多地加热它吗?),您应该选择一个专门设计的程序来做您想做的事情。是一个常见的问题。

如果您确实想强调处理器:

tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(0.5d))))))))))))))))))))));
添加更多级别,并将其放入循环中

这是多年前PDP-11的浸泡测试。

如果您真的想强调处理器:

tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(0.5d))))))))))))))))))))));
添加更多级别,并将其放入循环中


这是多年前PDP-11的浸泡测试。

当j=0时,stackoverflow因为i+1/j偏离了0也许你应该尝试提交警察报告?@billz:这是一个零分错误。是什么让你认为这是堆栈溢出?只需关闭优化器,你不需要它。真的没有人投票支持这个令人敬畏的标题吗?当j=0时,堆栈溢出因为i+1/j偏离了0也许你应该尝试提交警察报告?@billz:这是一个零分错误。是什么让你认为这是堆栈溢出?只需关闭优化器,你不需要它。真的没有人投票支持这个很棒的标题吗?很好!这让我很紧张,更不用说电脑了。太好了!这让我很紧张,更不用说电脑了。