2013-07-25 20 views
11

私はD言語が新しく、アルゴリズムの実行時間を測定する必要があります。私の選択肢は何ですか?既に組み込みのソリューションがありますか?私はウェブ上で決定的なものを見つけることができませんでした。D言語での実行時間の測定

答えて

14

1つの方法は、-profileコマンドラインパラメータを使用することです。プログラムを実行すると、ファイルtrace.logが作成され、各機能の実行時間がわかります。これはもちろん、コンパイラがそれぞれの関数にタイムカウントコードを挿入するので、プログラムの速度が遅くなります。この方法は、機能の相対速度を見出し、最小限の労力でアプリケーションの速度を向上させるために最適化すべきものを特定するために使用されます。

第2のオプションは、std.datetime.StopWatchクラスを使用することです。このリンクの例を参照してください。

また、std.datetime.benchmark機能を直接使用することもできます。

は忘れないでください:

  1. を最大最適化-release -O -inline -noboundscheckを達成するために、これらのDMDコンパイラフラグを使用してベンチマーキングする場合。
  2. ベンチマークデバッグビルドしないでください。
  3. は、ベンチマークされた関数内でライブラリコードを呼び出さないようにしてください。あなた自身のコードの代わりにライブラリ実装のパフォーマンスをベンチマークすることになります。

また、LDCまたはGDCコンパイラの使用を検討することもできます。どちらもDMDよりも優れた最適化/アプリ実行速度を提供します。

+0

プロファイリングは私がこの場合に必要とするものではありませんが、 'std.datetime.StopWatch'は私が探していたものです。 – clstaudt

3

あなたのアルゴリズムをコマンドラインから呼び出せれば、Dで書かれた気の利いたユーティリティがあり、あなたのプログラムを何時間も実行し、平均時間と他の有用な数字のすべての分布を表示します。

それはavgtimeと呼ばれ、それがここにあるです:https://github.com/jmcabo/avgtime

関連する問題