133

どうすれば電話できclock()ますC++か?

たとえば、線形検索が配列内の特定の要素を見つけるのにかかる時間をテストしたいと思います。

4

7 に答える 7

215
#include <iostream>
#include <cstdio>
#include <ctime>

int main() {
    std::clock_t start;
    double duration;

    start = std::clock();

    /* Your algorithm here */

    duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;

    std::cout<<"printf: "<< duration <<'\n';
}
于 2010-07-10T19:13:24.113 に答える
76

C ++ 11以降で利用可能な、移植性が高く高精度の代替ソリューションは、を使用することstd::chronoです。

次に例を示します。

#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;

int main()
{
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << "Delta t2-t1: " 
              << std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
              << " nanoseconds" << std::endl;
}

ideone.comでこれを実行すると、次のようになります。

Delta t2-t1: 282 nanoseconds
于 2015-08-27T05:04:52.730 に答える
31

clock()プログラムが開始されてからのクロックティック数を返します。関連する定数、がCLOCKS_PER_SECあります。これは、1秒間に発生するクロックティックの数を示します。したがって、次のような操作をテストできます。

clock_t startTime = clock();
doSomeOperation();
clock_t endTime = clock();
clock_t clockTicksTaken = endTime - startTime;
double timeInSeconds = clockTicksTaken / (double) CLOCKS_PER_SEC;
于 2010-07-10T19:10:36.553 に答える
4

少なくともWindowsでは、実用的に正確な測定メカニズムはQueryPerformanceCounter(QPC)だけです。std :: chronoはそれを使用して実装されます(VS2015以降、これを使用する場合)が、QueryPerformanceCounterを直接使用する場合と同じ程度には正確ではありません。特に、1ナノ秒の粒度で報告することは絶対に正しくないと主張しています。したがって、非常に短時間で測定する場合(そして、そのような場合もあります)、QPCまたはOSに相当するものを使用する必要があります。キャッシュのレイテンシーを測定するときにこれに直面しました。ここに、役立つと思われるメモをいくつか書き留めました。 https://github.com/jarlostensen/notesandcomments/blob/master/stdchronovsqcp.md

于 2018-02-25T18:12:53.573 に答える
0
#include <iostream>
#include <ctime>
#include <cstdlib> //_sleep()  --- just a function that waits a certain amount of milliseconds

using namespace std;

int main()
{

    clock_t cl;     //initializing a clock type

    cl = clock();   //starting time of clock

    _sleep(5167);   //insert code here

    cl = clock() - cl;  //end point of clock

    _sleep(1000);   //testing to see if it actually stops at the end point

    cout << cl/(double)CLOCKS_PER_SEC << endl;  //prints the determined ticks per second (seconds passed)


    return 0;
}

//outputs "5.17"
于 2015-08-27T04:36:40.847 に答える
0

プログラムの動作時間を測定できます。次の関数は、プログラムの開始以降のCPU時間を測定するのに役立ちます。

  • ctime(double)clock() / CLOCKS_PER_SECを含むC++ 。
  • Pythontime.clock()は浮動小数点値を秒単位で返します。
  • JavaSystem.nanoTime()はナノ秒単位で長い値を返します。

私の参考資料:カリフォルニア大学サンディエゴ校と国立研究大学高等経済学部によるデータ構造とアルゴリズムの専門分野のアルゴリズムツールボックス第1週コース

したがって、アルゴリズムの後に次のコード行を追加できます。

cout << (double)clock() / CLOCKS_PER_SEC;

期待される出力:の数を表す出力clock ticks per second

于 2020-05-29T13:05:29.473 に答える
-1

おそらくあなたはこのようなタイマーに興味があるかもしれません:H:M:S。Msec

Linux OSのコード:

#include <iostream>
#include <unistd.h>

using namespace std;
void newline(); 

int main() {

int msec = 0;
int sec = 0;
int min = 0;
int hr = 0;


//cout << "Press any key to start:";
//char start = _gtech();

for (;;)
{
        newline();
                if(msec == 1000)
                {
                        ++sec;
                        msec = 0;
                }
                if(sec == 60)
                {
                        ++min;
                        sec = 0; 
                }
                if(min == 60)
                {
                        ++hr;
                        min = 0;
                }
        cout << hr << " : " << min << " : " << sec << " . " << msec << endl;
        ++msec;
        usleep(100000); 

}

    return 0;
}

void newline()
{
        cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
}
于 2016-03-17T12:32:13.687 に答える