私のプログラムは、時間と空間の両方で、さまざまな並べ替えアルゴリズムを互いに競合させようとしています。スペースをカバーしましたが、時間を測定するのが面倒です。並べ替えを実行するコードは次のとおりです。
void test(short* n, short len) {
short i, j, a[1024];
for(i=0; i<2; i++) { // Loop over each sort algo
memused = 0; // Initialize memory marker
for(j=0; j<len; j++) // Copy scrambled list into fresh array
a[j] = n[j]; // (Sorting algos are in-place)
// ***Point A***
switch(i) { // Pick sorting algo
case 0:
selectionSort(a, len);
case 1:
quicksort(a, len);
}
// ***Point B***
spc[i][len] = memused; // Record how much mem was used
}
}
(簡単にするために、ソートアルゴリズムの一部を削除しました)
ここで、並べ替えアルゴリズムにかかる時間を測定する必要があります。これを行う最も明白な方法は、ポイント (a) の時間を記録し、ポイント (b) の時間からそれを差し引くことです。しかし、C の時間関数はどれも十分ではありません。
time()は時間を秒単位で教えてくれますが、アルゴはそれよりも速いので、もっと正確なものが必要です。
clock()は、プログラムが開始されてからの CPU ティックを提供しますが、最も近い 10,000 に丸められているようです。まだ小さくない
timeシェル コマンドは十分に機能しますが、アルゴリズムごとに 1,000 以上のテストを実行する必要があり、それぞれのテストに個別の時間が必要です。
getrusage()が何を返すのかわかりませんが、長すぎます。
私が必要とするのは、並べ替え関数の実行時間よりも短い単位での時間です (可能であれば大幅に): 約 2 ミリ秒。私の質問は次のとおりです。どこで入手できますか?