まず、テストを高速化するコードを、テストしたくないコードの呼び出しから分離することをお勧めします。特に、そのようなコードがファイルIO、ディスプレイ出力、ロギング、コンソール出力などを実行しないことを確認してください(もちろん、IOコード自体をテストする場合を除きます)
また、事前にテスト実行に必要なすべてのデータをロードして、データのロードが測定されないようにすることもできます。
良いトリックは、できるだけテストを少なくすることです。最も大きな違いを生む数行まで追跡できれば、残りのコードとは別にそれらをテストする方法を見つけることができます。たぶん、この唯一の目的のために注意深く設計された新しい関数にそれらをコピーして貼り付けることさえできます。
高精細時間のカウントを実際に行うように設定されている場合は、OSが提供する機能を使用して、リアルタイムまたは高優先度のCPUモードに入ることもできます。
場合によっては、生成された低レベルのマシンコードを確認し、CPUメーカー(またはVM実装)からの参照データを使用して、問題のコードに必要な「CPUティック」の数を計算することができます。多くのcpu/vm命令は、パイプライン/オペランド/ cpuモデルなどに応じて実行時間が変動するため、このアプローチでもおおよその値が得られます。
したがって、最良のアドバイスは、測定の許容誤差を正しく設定することです。通常、私はいくつかのコードのタイムテストを開始するときに、これを10%と個人的に考えています。その後、この値は(通常)減少する可能性があります。しかし、それは決して0%ではありません。したがって、プログラムが「実行時間:%i ns」を出力する場合、常に「+-Xns」を出力できます(おそらくそうすべきです)。