初めての D プロジェクトについてアドバイスが必要です。私はそれをアップロードしました:-
https://bitbucket.org/mrjohns/matcher/downloads
IDEA : 3 つのランタイム アルゴリズムのベンチマークと、それらのコンパイル時のバリアントとの比較。これらの唯一の違いは、コンパイル時にルックアップ テーブル (つまり、配列 bmBc、bmGs、およびサフィックス) をコンパイル時に計算する必要があることです (私は現在 CTFE に依存しています)。一方、実行時のものの場合、ルックアップ テーブルは実行時に計算されます。
NB : パターン マッチング アルゴリズム自体はコンパイル時に実行する必要はなく、ルックアップ テーブルのみを実行する必要があります。これを述べた上で、既知の (コンパイル時に計算された) テーブルで実行されるアルゴリズムは、実行時に計算する必要があるものよりも高速でなければなりません。 .
私の結果は何か違うことを示しているようです。最初のペア (BM_Runtime と BM_Compile-time) のみが許容可能な結果をもたらし、他の 2 つのペアはコンパイル時のバリアントの実行時間を長くします。ここに何かが欠けていると思います。助けてください。
pattern="GCAGAGAG" の現在の結果は以下のとおりです:-
**BM_Runtime** = 366 hnsecs position= 513
**BM_Compile-time** = 294 hnsecs position =513
**BMH_Runtime** = 174 hnsecs position= 513
**BMH_Compile-time** = 261 hnsecs position= 513
**AG_Run-time** = 258 hnsecs position= 513
**AG_Compile-time** = 268 hnsecs position= 513
コードの実行: dmd -J. matcher.d input.d rtime_pre.d ctime_pre.d && numactl --physcpubind=0 ./matcher
ご提案いただければ幸いです。
よろしくお願いします。