summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/klib/test/kstring_bench2.c
diff options
context:
space:
mode:
Diffstat (limited to 'debian/vendor-h2o/deps/klib/test/kstring_bench2.c')
-rw-r--r--debian/vendor-h2o/deps/klib/test/kstring_bench2.c131
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;
-}