以C+为单位计算时间+/CLI 我有应用程序,在这里我必须计算执行C++函数和ASM函数的部分时间。事实上我有个问题,我得到的时间很奇怪-0或大约15600次。O更经常地观看。有时,在执行之后,时间看起来很好,值不同于0和~15600。有人知道为什么会这样吗?如何修复它? 执行我的C++应用程序的计数时间片段: auto start = chrono::system_clock::now(); for (int i = 0; i < nThreads; i++) xThread[i]->Start(i); for (int i = 0; i < nThreads; i++) xThread[i]->Join(); auto elapsed = chrono::system_clock::now() - start; long long milliseconds = chrono::duration_cast<std::chrono::microseconds>(elapsed).count(); cppTimer = milliseconds; auto start=chrono::system_clock::now(); 对于(int i=0;iStart(i); 对于(int i=0;iJoin(); 自动运行=时钟::系统时钟::现在()-开始; 长毫秒=chrono::duration_cast(已用).count(); cppTimer=毫秒;

以C+为单位计算时间+/CLI 我有应用程序,在这里我必须计算执行C++函数和ASM函数的部分时间。事实上我有个问题,我得到的时间很奇怪-0或大约15600次。O更经常地观看。有时,在执行之后,时间看起来很好,值不同于0和~15600。有人知道为什么会这样吗?如何修复它? 执行我的C++应用程序的计数时间片段: auto start = chrono::system_clock::now(); for (int i = 0; i < nThreads; i++) xThread[i]->Start(i); for (int i = 0; i < nThreads; i++) xThread[i]->Join(); auto elapsed = chrono::system_clock::now() - start; long long milliseconds = chrono::duration_cast<std::chrono::microseconds>(elapsed).count(); cppTimer = milliseconds; auto start=chrono::system_clock::now(); 对于(int i=0;iStart(i); 对于(int i=0;iJoin(); 自动运行=时钟::系统时钟::现在()-开始; 长毫秒=chrono::duration_cast(已用).count(); cppTimer=毫秒;,c++,timer,c++-cli,C++,Timer,C++ Cli,在我看来不错。除了转换为std::chrono::microseconds并将其命名为毫秒 我已经使用了几个月的片段是: class benchmark { private: typedef std::chrono::high_resolution_clock clock; typedef std::chrono::milliseconds milliseconds; clock::time_point start; public: benchmark(bo

在我看来不错。除了转换为
std::chrono::microseconds
并将其命名为
毫秒

我已经使用了几个月的片段是:

class benchmark {

private:
    typedef std::chrono::high_resolution_clock clock;
    typedef std::chrono::milliseconds milliseconds;

    clock::time_point start;

public:
    benchmark(bool startCounting = true) {
        if(startCounting)
            start = clock::now();
    }

    void reset() {
        start = clock::now();
    }

    // in milliseconds
    double elapsed() {
        milliseconds ms = std::chrono::duration_cast<milliseconds>(clock::now() - start);
        double elapsed_secs = ms.count() / 1000.0;
        return elapsed_secs;
    }
};



// usage
benchmark b;
...
cout << "took " << b.elapsed() << " ms" << endl;
类基准{
私人:
typedef std::chrono::高分辨率时钟;
typedef std::chrono::毫秒;
时钟:时间点开始;
公众:
基准测试(bool startCounting=true){
如果(开始计算)
开始=时钟::现在();
}
无效重置(){
开始=时钟::现在();
}
//以毫秒计
双时间(){
毫秒ms=std::chrono::duration\u cast(时钟::now()-start);
双时间间隔=毫秒计数()/1000.0;
返回经过的秒数;
}
};
//用法
基准b;
...

你在那里看到的是计时器的分辨率。显然,
chrono::system_clock
在您的系统上每1/64秒(15625微秒)滴答一次


由于您使用的是C++/CLI,并且.Net库可用,因此我将切换到使用该类。它的分辨率通常比1/64秒高得多。

我觉得不错。除了转换为
std::chrono::microseconds
并将其命名为
毫秒
。您期望的是什么?它的输出是什么?