其他分享
首页 > 其他分享> > c – ()循环基准测试对于任何循环绑定都需要相同的时间

c – ()循环基准测试对于任何循环绑定都需要相同的时间

作者:互联网

我愿意编写一个代码,让我的CPU执行一些操作,看看他花了多少时间来解决它们.我想做一个从i = 0到i <5000的循环,然后将i乘以一个常数和时间.我最终得到了这个代码,它没有错误,但即使我改变循环i< 49058349083或者如果i< 2它花费相同的时间,它只需要0.024秒来执行代码.是什么错误? PD:我昨天开始学习C,对不起,如果这是一个非常容易回答的问题,但我找不到解决方案

#include <iostream>
#include <ctime>

using namespace std;

int main () {
    int start_s=clock();

    int i;
    for(i=0;i<5000;i++){
        i*434243;
    }

    int stop_s=clock();
    cout << "time: "<< (stop_s-start_s)/double(CLOCKS_PER_SEC)*1000;

    return 0;
}

解决方法:

因为for循环的主体:

i*434243;

什么都不做,所以假设您正在编译启用了优化标志的代码,编译器会将其擦掉.

将其更改为:

int a = i*434243;

可能会在-O0以外的任何其他方面进行优化,所以我不建议.

此外,这将导致未定义的行为,因为溢出,因为您使用的常量值相对较大,因为我继续增加.

我建议你这样做:

int a = i * i;
cout << a << "\n";   

标签:microbenchmark,c,performance,benchmarking
来源: https://codeday.me/bug/20190910/1800790.html