2017-12-30 29 views
-7

特定の入力ファイルの出力を生成するためにC/C++プログラムがどれくらいの時間を要しているかを知りたい。C/C++プログラムの実行時間を調べる

通常、txtなどの入力ファイルを作成し、txt形式やその他の形式の出力ファイルを作成します。たとえば :

int main() 
{ 
    freopen("input.txt","r",stdin); 
    freopen("output.txt","w",stdout); 

    //take input and give output 

    //fclose(stdin); 
    //fclose(stdout); 

    return 0; 
} 

は私がプログラムを実行し、それがコンソールウィンドウに実行時間を示しています。しかし、これが実行時間を知る最も正確な方法であるかどうかはわかりません。

いくつかの学校レベルのプログラミングコンテストでプログラミング問題の制限時間を設定するために、特定の入力ファイルのプログラムの実行時間を知る必要があります。

+1

[プロファイラ](https://en.wikipedia.org/wiki/Profiling_(computer_programming))を使用してください。 –

+0

プロファイラーを持っていない場合std :: chronoが助けます:http://en.cppreference.com/w/cpp/chrono下部の例を見てください。 – drescherjm

+0

プログラムの開始時にタイマーを開始し、最後にタイマーを停止することができます。時間値をどこかに保存または表示して確認するだけです。 –

答えて

2

Linuxの場合、timeコマンドを使用できます。 time yourexecutableを書き込んでください。Windowsでは、powershellコマンドMeasure-Command {yourexecutable}を使用できます。 を実際のプログラムバイナリに置き換えてください。

-1

開始時刻を保存してstd :: chronoで目的のコードを囲み、最後に時間を差し引いて期間を取得します。

auto startTime = std::system_clock::now(); 
/* test code */ 
auto dur = std::system_clock::now() - startTime; 
std::cout << "Duration: " << dur << std::endl; 

エントリプログラムをどのくらいの期間与えて、その時間を比較することができます。エントリーを強制的に中止するのはやや難しく、それは別のプロセスとしてエントリーを起動するラッパープログラムを必要とします(とにかく悪い考えではありません)。あなたがたとえば、あなたのプログラムの特定の部分の速度を測定するために、時間()関数を使用することができますCで

0

# include <time.h> 
int main() { 
    /* Do stuff here */ 
    time_t start, finish; 
    time(&start); /* time() stores the value in the pointed buffer */ 
    /* Measure this part */ 
    time(&finish); 
    printf("Part 1 took %li seconds\n", finish - start); 
    /* %li may not be the good flag according to your system. */ 
    /* Do extra stuff here */ 
    return 0; 
} 

私は

...どのようにCPPでこれを行うには考えています
+0

誰もがなぜdownvoteを説明することができますか?私は私の答えが間違っているとは思わないが、明らかにCPPのためにする方法は述べていないが、他の人はそれに答えている。 –

+0

私はおそらくdownvoteを推測しているかもしれないいくつかのC + +のバイロから来た?それは私にとって完全に良い答えと思われる... – paulsm4

関連する問題