diff options
Diffstat (limited to '')
-rw-r--r-- | debian/vendor-h2o/deps/klib/test/kstring_bench2.c | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/debian/vendor-h2o/deps/klib/test/kstring_bench2.c b/debian/vendor-h2o/deps/klib/test/kstring_bench2.c deleted file mode 100644 index b7707a8..0000000 --- a/debian/vendor-h2o/deps/klib/test/kstring_bench2.c +++ /dev/null @@ -1,131 +0,0 @@ -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <time.h> -#include "kstring.h" - -#ifdef __APPLE__ -#define HAVE_STRNSTR -#endif - -#ifdef __linux__ -#define HAVE_MEMMEM -#endif - -static int str_len = 1024*1024*128; -static int pat_len = 30; -static int alphabet = 2; -static int repeat = 50; - -char *gen_data(int len, int a) -{ - char *data; - int i; - long x; - srand48(11); - data = malloc(len); - for (i = 0; i < len; ++i) - data[i] = (int)(a * drand48()) + '!'; - data[str_len - 1] = 0; - return data; -} -// http://srcvault.scali.eu.org/cgi-bin/Syntax/c/BoyerMoore.c -char *BoyerMoore( unsigned char *data, unsigned int dataLength, unsigned char *string, unsigned int strLength ) -{ - unsigned int skipTable[256], i; - unsigned char *search; - register unsigned char lastChar; - - if (strLength == 0) - return NULL; - - for (i = 0; i < 256; i++) - skipTable[i] = strLength; - search = string; - i = --strLength; - do { - skipTable[*search++] = i; - } while (i--); - lastChar = *--search; - search = data + strLength; - dataLength -= strLength+(strLength-1); - while ((int)dataLength > 0 ) { - unsigned int skip; - skip = skipTable[*search]; - search += skip; - dataLength -= skip; - skip = skipTable[*search]; - search += skip; - dataLength -= skip; - skip = skipTable[*search]; - if (*search != lastChar) { - search += skip; - dataLength -= skip; - continue; - } - i = strLength; - do { - if (i-- == 0) return search; - } while (*--search == string[i]); - search += (strLength - i + 1); - dataLength--; - } - return NULL; -} - -int main() -{ - char *data; - int i; - clock_t t; - t = clock(); - data = gen_data(str_len, alphabet); - fprintf(stderr, "Generate data in %.3f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - { - t = clock(); srand48(1331); - for (i = 0; i < repeat; ++i) { - int y = lrand48() % (str_len - pat_len); - char *ret; - ret = kmemmem(data, str_len, data + y, pat_len, 0); -// printf("%d, %d\n", (int)(ret - data), y); - } - fprintf(stderr, "Search patterns in %.3f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } - if (1) { - t = clock(); srand48(1331); - for (i = 0; i < repeat; ++i) { - int y = lrand48() % (str_len - pat_len); - char *ret; - ret = BoyerMoore(data, str_len, data + y, pat_len); -// printf("%d, %d\n", (int)(ret - data), y); - } - fprintf(stderr, "Search patterns in %.3f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } -#ifdef HAVE_STRNSTR - if (1) { - char *tmp; - t = clock(); srand48(1331); - tmp = calloc(pat_len+1, 1); - for (i = 0; i < repeat; ++i) { - int y = lrand48() % (str_len - pat_len); - char *ret; - memcpy(tmp, data + y, pat_len); - ret = strnstr(data, tmp, str_len); - } - fprintf(stderr, "Search patterns in %.3f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } -#endif -#ifdef HAVE_MEMMEM - if (1) { - t = clock(); srand48(1331); - for (i = 0; i < repeat; ++i) { - int y = lrand48() % (str_len - pat_len); - char *ret; - ret = memmem(data, str_len, data + y, pat_len); -// printf("%d, %d\n", (int)(ret - data), y); - } - fprintf(stderr, "Search patterns in %.3f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } -#endif - return 0; -} |