Branch: Tag:

2000-10-10

2000-10-10 00:02:56 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

new search routines, makes search() up to 12% faster (more on wide strings)

Rev: src/Makefile.in:1.210
Rev: src/main.c:1.105
Rev: src/pike_memory.c:1.90
Rev: src/pike_memory.h:1.25
Rev: src/pike_search.c:1.1
Rev: src/pike_search.h:1.1
Rev: src/pike_search_engine.c:1.1
Rev: src/pike_search_engine2.c:1.1
Rev: src/stralloc.c:1.103

25:   #define HUGE HUGE_VAL   #endif /*!HUGE*/    - RCSID("$Id: stralloc.c,v 1.102 2000/10/08 19:07:35 grubba Exp $"); + RCSID("$Id: stralloc.c,v 1.103 2000/10/10 00:02:56 hubbe Exp $");      #define BEGIN_HASH_SIZE 997   #define MAX_AVG_LINK_LENGTH 3
1356:    struct pike_string *needle,    ptrdiff_t start)   { +  SearchMojt mojt;    struct generic_mem_searcher s;    char *r;    -  if(needle->size_shift > haystack->size_shift) +  if(needle->size_shift > haystack->size_shift || +  start + needle->len > haystack->len)    return -1;    -  init_generic_memsearcher(&s, -  needle->str, +  mojt=compile_memsearcher(MKPCHARP_STR(needle),    needle->len, -  needle->size_shift, -  haystack->len-start, -  haystack->size_shift); +  0x7fffffff, +  needle);    -  +  r=mojt.vtab->funcN(mojt.data, +  ADD_PCHARP(MKPCHARP_STR(haystack), start), +  haystack->len).ptr;    -  r=(char *)generic_memory_search(&s, -  haystack->str+(start<<haystack->size_shift), -  haystack->len-start, -  haystack->size_shift); +  mojt.vtab->freeme(mojt.data);       if(!r) return -1;    return (r-haystack->str)>>haystack->size_shift;