[2] ベンチマークテストをしてみます。
#include "kbcl0.h"
#include <stdio.h>
#include <time.h>
#include <string.h>
int cmp(void *opt, char *a, char *b) { (void) opt; return strncmp(a, b, 81); }
unsigned int hsh(void *opt, char *a) { (void) opt; return kfnv32(a, 81); }
int main()
{
// ファイルから読み込んで行単位で記憶する.
char *f = (char *) kreadFileA("t0005t.txt", "rb", 1 + 2);
KSizPtr sp;
while (*f != 0)
sp.addPtr(kcutCrLfM(ksgetsA(&f)));
// インデックスを作って登録する.
KIndexS idx((void *) cmp, 0);
int i, i1 = sp.s / sizeof (void *), j, cr;
char **p = (char **) sp.p;
for (i = 0; i < i1; i++)
idx.ins(p[i]);
// 検索速度の測定.
clock_t t0 = 0, t1;
for (j = -10; j < 10000; j++) {
if (j == 0) t0 = clock();
for (i = 0; i < i1; i++)
idx.search(p[i], &cr);
}
t1 = clock();
printf("%d\n", (int) (t1 - t0));
return 0;
}