From 253865441b1bbd65360092eaf281939be82798db Mon Sep 17 00:00:00 2001 From: leitner Date: Fri, 1 Apr 2005 20:35:22 +0000 Subject: [PATCH] change type 1 indices to be two tables of uint32 instead of one table of tuples this ought to be more cache friendly --- addindex.c | 19 ++++++++++++------- tinyldap.c | 41 ++++++++++------------------------------- 2 files changed, 22 insertions(+), 38 deletions(-) diff --git a/addindex.c b/addindex.c index bef278f..8908f83 100644 --- a/addindex.c +++ b/addindex.c @@ -149,18 +149,23 @@ int main(int argc,char* argv[]) { } uint32_pack(map+casesensitive,ignorecase); uint32_pack(map+filelen,fastindex); - uint32_pack(map+filelen+4,filelen+(counted+3)*4*(fastindex+1)); + uint32_pack(map+filelen+4,filelen+3*4+(counted)*4*(fastindex+1)); uint32_pack(map+filelen+8,wanted); { char* x=map+filelen+12; unsigned long i; for (i=0; i=bottom)) { uint32 mid=(top+bottom)/2; uint32 l; l=uint32_read(map+uint32_read((char*)(&records[mid]))+8); -#if 0 - buffer_puts(buffer_2,"findrec match["); - buffer_putulong(buffer_2,bottom); - buffer_puts(buffer_2,".."); - buffer_putulong(buffer_2,top); - buffer_puts(buffer_2,"]: "); - buffer_putulong(buffer_2,l); - buffer_puts(buffer_2," <-> "); - buffer_putulong(buffer_2,dat); - buffer_putsflush(buffer_2,": "); -#endif if (l<=dat) { if (mid>=record_count-1) l=uint32_read(map+uint32_read((char*)(&records[0]))+12); else l=uint32_read(map+uint32_read((char*)(&records[mid+1]))+8); if (l>dat) { -#if 0 - buffer_putsflush(buffer_2,"found!\n"); -#endif -#ifdef DEBUG - buffer_putsflush(buffer_2,"done!\n"); -#endif return mid; /* found! */ } bottom=mid+1; @@ -270,9 +252,6 @@ static long findrec(uint32 dat) { top=mid-1; else break; -#if 0 - buffer_putsflush(buffer_2,"nope :-(\n"); -#endif } buffer_putsflush(buffer_2,"findrec failed!\n"); return -1; @@ -314,7 +293,7 @@ static void tagmatches(uint32* index,unsigned int elements,struct string* s, uint32 k; int l; - k=uint32_read((char*)(&index[mid<0; --k) { - m=uint32_read((char*)(&index[k<=0) setbit(bitfield,rec); } else break; } for (k=mid+1; k=0) setbit(bitfield,rec); } else break;