diff options
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/string.c b/string.c new file mode 100644 index 0000000..158b828 --- /dev/null +++ b/string.c @@ -0,0 +1,68 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define BUFLEN 500000 + +size_t b_string_strstr(void *dummy) +{ + const char *needle = dummy; + size_t l = strlen(needle); + size_t i; + size_t cnt = 10000; + size_t cs = 0; + char *haystack = malloc(l * cnt + 1); + for (i=0; i<cnt-1; i++) { + memcpy(haystack + l*i, needle, l); + haystack[l*i+l-1] ^= 1; + } + memcpy(haystack + l*i, needle, l+1); + for (i=0; i<50; i++) { + haystack[0]^=1; + cs += (int)strstr(haystack, needle); + } + free(haystack); + return cs; +} + +size_t b_string_memset(void *dummy) +{ + char *buf = malloc(BUFLEN); + size_t i; + for (i=0; i<100; i++) + memset(buf+i, i, BUFLEN-i); + free(buf); + return 0; +} + +size_t b_string_strchr(void *dummy) +{ + char *buf = malloc(BUFLEN); + size_t i; + size_t cs; + memset(buf, 'a', BUFLEN); + buf[BUFLEN-1] = 0; + buf[BUFLEN-2] = 'b'; + for (i=0; i<100; i++) { + buf[i] = '0'+i%8; + cs += (int)strchr(buf, 'b'); + } + free(buf); + return cs; +} + +size_t b_string_strlen(void *dummy) +{ + char *buf = malloc(BUFLEN); + size_t i; + size_t cs = 0; + + memset(buf, 'a', BUFLEN-1); + buf[BUFLEN-1] = 0; + for (i=0; i<100; i++) { + buf[i] = '0'+i%8; + cs += strlen(buf); + } + free(buf); + return cs; +} |