voile.benchmark

性能評価に関するモジュール
ベンチマークのヘルパクラスや、所定位置を通過した時間の記録、呼び出された回数 などを記録することのできるクラスを用意した。 関数の実行にかかる時間を短縮し、スピードアップするのに役に立つかもしれない。
  • Benchmark
  • FootPrint
  • CallCounter
Date: December 08, 2008
Authors: P.Knowledge, SHOO
License: NYSL ( http://www.kmonos.net/nysl/ )
struct FootPrintBenchmark;
足跡を記録する
このクラスは、ファイルと行番号ごとに足跡をつけ、前回の足跡からどの程度の時間 が経過したかを記録し、時間がかかっている個所を特定するためのクラスです。
void main()
{
    scope fp = new FootPrint;
    fp.stamp(__FILE__,__LINE__);
    func1();
    fp.stamp(__FILE__,__LINE__);
    func2();
    fp.stamp(__FILE__,__LINE__);
    Stdout("Stamp infomations").newline;
    foreach (d; fp.result)
    {
        Stdout.formatln("{}({}): {} sec", d.file, d.line, d.time.interval);
    }
}
For profiling.
It stamps the code footprints for searching bottlenecks. When not enough to profile in -profile, this object is useful.
struct Data;
記録されるデータ
Duration time;
時間
string file;
呼び出し元ファイル名
uint line;
呼び出し元行数
const string toString();
文字列表現
this(AutoStart as);
自動測定コンストラクタ
AutoStartの値によって、自動的にストップウォッチ開始するか決まります。
void start();
ストップウォッチスタート
初めてのスタートの場合、この時刻からの時間を測定して足跡に記録します。 一時停止からの復帰の場合、継続的に時間の測定を行います。
void stop();
ストップウォッチストップ
一時停止です。再び復帰する場合はstart()します
void reset();
ストップウォッチリセット
void clear();
データをクリアします。
ストップウォッチの状態はそのままです。 ストップウォッチをリセットする場合はresetをコールしてください
void stamp(string f = __FILE__, uint l = __LINE__);
足跡を記録します。
この関数を呼び出した時点での時間と、呼び出し元を記録してデータに追加しま す。
immutable(real)[] intervals();
各データのそれぞれの呼び出し間隔を返します。
immutable(Data)[] datas();
記録されたデータそのものを返します
immutable(Data)[] intervalDatas();
記録されたデータそのものを返します
class CallCounter;
呼び出しの情報を記録する
このクラスは呼び出した回数を記録する。呼び出された回数が多いほどその周囲は 時間に気をつけるようにするとよい。
struct Data;
記録されるデータ
immutable string file;
ファイル名
immutable uint line;
行番号
immutable ulong count;
回数
void call(string file = __FILE__, uint line = __LINE__);
呼び出す
この関数を呼び出すことで、その場所の呼び出し回数カウントしていく。
immutable(Data)[] result();
結果を返す
このクラスは呼び出した回数を記録する。呼び出された回数が多いほどその周囲は 時間に気をつけるようにするとよい。
struct ProfileData;
Thread thread;
string file;
uint line;
MonoTime time;
MonoTime duration;