C++でプログラムの実行時間をどのように計算するか
2355 ワード
転載先:http://blog.csdn.net/wuxuguang123/article/details/8130081
1つのプログラムの機能は通常多くの方法で実現されていますが、どのようなプログラムが最適ですか?例えば、同じ機能を実現した2つのプログラムで、1つのボタンで実行結果が出ますが、もう1つはWINDOWS XPをインストールするように長い時間待つ必要があります(ほほほ、大げさでしょう)、あなたはどのプログラムを使いますか?言うまでもなく、最適なプログラムの最初の法則は、プログラムの実行速度が速いことです.では、一つのプログラムがいろいろな方法で実現できる以上、私はどの方法が一番優れているかどのように知っていますか.いくつかのプログラムは明らかで、あなたはそれを実行して、1つのプログラムは3秒で、1つは1秒で、あなたはもちろん感じることができます.もしすべて1秒以内ならば、あなたはまた申請のメモリ空間のいくらを見ることができて、演算のデータの大きさ、演算の過程の簡単で複雑で、時にはどのプログラムが最も良いかを見分けることができて、しかし時には、そんなに簡単に見ることができなくて、例えばそれは別のプログラムより1つの変数を定義することが少なくて、しかしそれはまたあの別のプログラムより多くいくつかの除算法を使って、では、それらの運行速度をどのように比較しますか?方法はただ一つ--時間を計る!C++の計時関数はclock()であり、それに関連するデータ型はclock_である.t(ヘッダファイルはtime.h).関数定義プロトタイプ:clock_t clock(void); この関数は、MSDNでは、「このプログラムプロセスを開く」から「プログラムでclock()関数を呼び出す」までの間のCPUクロックタイミングユニットの数を返します.ここでclock_tは時間を保存するためのデータ型です.time.hファイルでは、その定義を見つけることができます. #ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_T_DEFINED #endifは明らかだclock_tは長い整形数です.またtime.hファイルでは、定数CLOCKS_も定義されています.PER_SECは、1秒に何個のクロックタイミングユニットがあるかを表すために使用されるので、式clock()/CLOCKS_を使用することができます.PER_SECは、プロセス自体の実行時間を計算します.次は上の知識について例を挙げて理解を助けます.include #include void main() { clock_t start,finish; double totaltime; start=clock(); …… //プログラムコードをここに挿入して finish=clock(); totaltime=(double)(finish-start)/CLOCKS_PER_SEC; cout<<「このプログラムの実行時間は」< 自分で適用したテンプレートコード:
1つのプログラムの機能は通常多くの方法で実現されていますが、どのようなプログラムが最適ですか?例えば、同じ機能を実現した2つのプログラムで、1つのボタンで実行結果が出ますが、もう1つはWINDOWS XPをインストールするように長い時間待つ必要があります(ほほほ、大げさでしょう)、あなたはどのプログラムを使いますか?言うまでもなく、最適なプログラムの最初の法則は、プログラムの実行速度が速いことです.では、一つのプログラムがいろいろな方法で実現できる以上、私はどの方法が一番優れているかどのように知っていますか.いくつかのプログラムは明らかで、あなたはそれを実行して、1つのプログラムは3秒で、1つは1秒で、あなたはもちろん感じることができます.もしすべて1秒以内ならば、あなたはまた申請のメモリ空間のいくらを見ることができて、演算のデータの大きさ、演算の過程の簡単で複雑で、時にはどのプログラムが最も良いかを見分けることができて、しかし時には、そんなに簡単に見ることができなくて、例えばそれは別のプログラムより1つの変数を定義することが少なくて、しかしそれはまたあの別のプログラムより多くいくつかの除算法を使って、では、それらの運行速度をどのように比較しますか?方法はただ一つ--時間を計る!C++の計時関数はclock()であり、それに関連するデータ型はclock_である.t(ヘッダファイルはtime.h).関数定義プロトタイプ:clock_t clock(void); この関数は、MSDNでは、「このプログラムプロセスを開く」から「プログラムでclock()関数を呼び出す」までの間のCPUクロックタイミングユニットの数を返します.ここでclock_tは時間を保存するためのデータ型です.time.hファイルでは、その定義を見つけることができます. #ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_T_DEFINED #endifは明らかだclock_tは長い整形数です.またtime.hファイルでは、定数CLOCKS_も定義されています.PER_SECは、1秒に何個のクロックタイミングユニットがあるかを表すために使用されるので、式clock()/CLOCKS_を使用することができます.PER_SECは、プロセス自体の実行時間を計算します.次は上の知識について例を挙げて理解を助けます.include
#include <stdio.h>
#include <time.h>
int f[100000001];
int main()
{
clock_t s, e;
s = clock();
//........code......
e = clock();
printf("%.6lf
", (double)(e-s)/(double)CLOCKS_PER_SEC );
return 0;
}