Blame src/string/bench.c

nsz 0b76d7
#include <stdio.h>
nsz 0b76d7
#include <stdlib.h>
nsz 0b76d7
#include <string.h>
nsz 0b76d7
#include "test.h"
nsz 0b76d7
nsz 0b76d7
#define LEN 200000
nsz 0b76d7
nsz 0b76d7
static int bstrstr(int N, const char *needle) {
nsz 0b76d7
	size_t l = strlen(needle);
nsz 0b76d7
	size_t cnt = 10000;
nsz 0b76d7
	int i;
nsz 0b76d7
	int cs = 0;
nsz 0b76d7
	char *haystack = malloc(l * cnt + 1);
nsz 0b76d7
nsz 0b76d7
	for (i=0; i
nsz 0b76d7
		memcpy(haystack + l*i, needle, l);
nsz 0b76d7
		haystack[l*i+l-1] ^= 1;
nsz 0b76d7
	}
nsz 0b76d7
	memcpy(haystack + l*i, needle, l+1);
nsz 08c133
	reset_timer();
nsz 0b76d7
	for (i=0; i
nsz 0b76d7
		haystack[0]^=1;
nsz 0b76d7
		cs += (int)strstr(haystack, needle);
nsz 0b76d7
	}
nsz 0b76d7
	free(haystack);
nsz 0b76d7
	return cs;
nsz 0b76d7
}
nsz 0b76d7
nsz 0b76d7
void bench_string_strstr1(int N) {
nsz 0b76d7
	bstrstr(N, "abcdefghijklmnopqrstuvwxyz");
nsz 0b76d7
}
nsz 0b76d7
void bench_string_strstr2(int N) {
nsz 0b76d7
	bstrstr(N, "azbycxdwevfugthsirjqkplomn");
nsz 0b76d7
}
nsz 0b76d7
void bench_string_strstr3(int N) {
nsz 0b76d7
	bstrstr(N, "aaaaaaaaaaaaaacccccccccccc");
nsz 0b76d7
}
nsz 0b76d7
void bench_string_strstr4(int N) {
nsz 0b76d7
	bstrstr(N, "aaaaaaaaaaaaaaaaaaaaaaaaac");
nsz 0b76d7
}
nsz 0b76d7
void bench_string_strstr5(int N) {
nsz 0b76d7
	bstrstr(N, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac");
nsz 0b76d7
}
nsz 0b76d7
nsz 0b76d7
void bench_string_memset(int N) {
nsz 0b76d7
	char *buf = malloc(LEN);
nsz 0b76d7
	int i;
nsz 0b76d7
nsz 0b76d7
	for (i=0; i
nsz 0b76d7
		memset(buf+i, i, LEN-i);
nsz 0b76d7
	free(buf);
nsz 0b76d7
}
nsz 0b76d7
nsz 0b76d7
void bench_string_strchr(int N) {
nsz 0b76d7
	char *buf = malloc(LEN);
nsz 0b76d7
	int i;
nsz 0b76d7
	int cs = 0;
nsz 0b76d7
nsz 0b76d7
	memset(buf, 'a', LEN);
nsz 0b76d7
	buf[LEN-1] = 0;
nsz 0b76d7
	buf[LEN-2] = 'b';
nsz 0b76d7
	reset_timer();
nsz 0b76d7
	for (i=0; i
nsz 0b76d7
		buf[i] = '0'+i%8;
nsz 0b76d7
		cs ^= (int)strchr(buf, 'b');
nsz 0b76d7
	}
nsz 0b76d7
	buf[0] = cs;
nsz 0b76d7
	free(buf);
nsz 0b76d7
}
nsz 0b76d7
nsz 0b76d7
void bench_string_strlen(int N) {
nsz 0b76d7
	char *buf = malloc(LEN);
nsz 0b76d7
	int i;
nsz 0b76d7
	int cs = 0;
nsz 0b76d7
nsz 0b76d7
	memset(buf, 'a', LEN-1);
nsz 0b76d7
	buf[LEN-1] = 0;
nsz 0b76d7
	reset_timer();
nsz 0b76d7
	for (i=0; i
nsz 0b76d7
		buf[i] = '0'+i%8;
nsz 0b76d7
		cs ^= strlen(buf);
nsz 0b76d7
	}
nsz 0b76d7
	buf[0] = cs;
nsz 0b76d7
	free(buf);
nsz 0b76d7
}