ソート・アルゴリズム入門から精通までの9-パフォーマンス・テスト
この論文では,いくつかの比較的速いソートアルゴリズムについて性能テストを行った.テストされたアルゴリズムには、ヒルソート、集計ソート、および高速ソートが含まれます.バブルソートのため,ソートを挿入し,選択ソート速度が遅いため,ここではデータを与えなかった.
すべてのアルゴリズムは同じプログラムで実行され、同じデータが使用されます.マクロMAX_を修正LENの値は、データ規模が1百万、2百万、4百万のそれぞれのテストです.2ラウンドのテストを行い、1ラウンド目のテストでは、集計ソートでmergeを呼び出しました.v 1,第2ラウンドのテストで集計ソート呼び出しmerge_v2_asm. 次はテスト結果です.
第1ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
164
413
920
集計ソート
79
160
329
クイックソート
73
176
435
第2ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
165
410
939
集計ソート
71
145
309
クイックソート
72
172
436
次はテストプログラムのソースコードです
すべてのアルゴリズムは同じプログラムで実行され、同じデータが使用されます.マクロMAX_を修正LENの値は、データ規模が1百万、2百万、4百万のそれぞれのテストです.2ラウンドのテストを行い、1ラウンド目のテストでは、集計ソートでmergeを呼び出しました.v 1,第2ラウンドのテストで集計ソート呼び出しmerge_v2_asm. 次はテスト結果です.
第1ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
164
413
920
集計ソート
79
160
329
クイックソート
73
176
435
第2ラウンドのテスト結果.各規模のデータに対して4回テストし、後3回の平均値をとり、時間単位はミリ秒である.
データ数
1百万
2百万
4百万
ヒルソート
165
410
939
集計ソート
71
145
309
クイックソート
72
172
436
次はテストプログラムのソースコードです
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include "sorts.h"
typedef void (*lpfn_sort_t)(ELE_TYPE arr[], int len);
extern void test_bubble_sort();
extern void test_select_sort();
extern void test_insert_sort();
extern void test_shell_sort();
extern void test_quick_sort();
extern void test_merge_sort();
extern void test_heap_sort();
void perf_test(ELE_TYPE *arr, int len, lpfn_sort_t fun, const char *fun_name )
{
long start,end;
start=get_millisecond();
fun(arr,len);
end=get_millisecond();
printf("Did %s on %d element spend %d ms
", fun_name,len, end-start);
}
void all_sort_fun_perf_test()
{
ELE_TYPE *src=NULL;
ELE_TYPE *arr=NULL;
int i;
src=(ELE_TYPE*)malloc(MAX_LEN*sizeof(ELE_TYPE));
arr=(ELE_TYPE*)malloc(MAX_LEN*sizeof(ELE_TYPE));
srand(time(NULL));
for (i=0;i