用时钟定时for循环

时间:2014-04-04 20:40:07

标签: c++

嗨所以我正在尝试做一个总计20个连续数字的程序并计算它所花费的时间...问题是当我运行程序时,时间总是0 ...任何想法?

这就是我到目前为止......谢谢!

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    int finish = 20;
    int start = 1;
    int result = 0;

    double msecs;
    clock_t init, end;

    init = clock();

    for (int i = start; i <= finish; i++)
    {
        result += i;
    }


    end = clock();

    cout << ((float)(end - init)) *1000 / (CLOCKS_PER_SEC);

    system ("PAUSE");

    return 0;
} 

2 个答案:

答案 0 :(得分:2)

无论您使用什么技术进行计时,它们都具有一定的精度。这简单地执行得如此之快,以至于您的计时器在任何时候都没有注册过。

除了#1:使用high_resolution_clock - 也许这会注册非零的东西,可能不会。

除了#2:不要在C ++中命名变量null,隐含0或空指针

答案 1 :(得分:0)

你可以尝试这个......但你可能需要C ++ 11版本。

这可以降到0.000001秒。

#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>

//using namespace std;

int main()
{
    using namespace std::chrono;
    high_resolution_clock::time_point t1 = high_resolution_clock::now();

    int finish = 20;
    int start = 1;

    for (int i = start; i <= finish; i++)
    {
        result += i;
    }

    high_resolution_clock::time_point t2 = high_resolution_clock::now();
    duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
    cout << time_span.count() << " seconds" << endl;
    end = clock();

    system ("PAUSE");

    return 0;
}