From 6cc52f59653c1332049df11bbde57f840e0464b5 Mon Sep 17 00:00:00 2001 From: nsz Date: Fri, 5 Aug 2011 02:45:05 +0200 Subject: [PATCH] utf8 bench from libc-bench --- src/multibyte/utf8bench.c | 65 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/multibyte/utf8bench.c diff --git a/src/multibyte/utf8bench.c b/src/multibyte/utf8bench.c new file mode 100644 index 0000000..5233549 --- /dev/null +++ b/src/multibyte/utf8bench.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include +#include + +#define LEN 500000 + +static char *initbuf() { + char *buf; + int i, j, k, l; + + setlocale(LC_CTYPE, "C.UTF-8") + || setlocale(LC_CTYPE, "en_US.UTF-8") + || setlocale(LC_CTYPE, "en_GB.UTF-8") + || setlocale(LC_CTYPE, "en.UTF-8") + || setlocale(LC_CTYPE, "de_DE-8") + || setlocale(LC_CTYPE, "fr_FR-8"); + if (strcmp(nl_langinfo(CODESET), "UTF-8")) exit(1); + + buf = malloc(LEN); + l = 0; + for (i=0xc3; i<0xe0; i++) + for (j=0x80; j<0xc0; j++) + buf[l++] = i, buf[l++] = j; + for (i=0xe1; i<0xed; i++) + for (j=0x80; j<0xc0; j++) + for (k=0x80; k<0xc0; k++) + buf[l++] = i, buf[l++] = j, buf[l++] = k; + for (i=0xf1; i<0xf4; i++) + for (j=0x80; j<0xc0; j++) + for (k=0x80; k<0xc0; k++) + buf[l++] = i, buf[l++] = j, buf[l++] = 0x80, buf[l++] = k; + buf[l++] = 0; + return buf; +} + +void bench_utf8_bigbuf(int N) { + char *buf; + wchar_t *wbuf; + int i; + int cs; + + buf = initbuf(); + wbuf = malloc(LEN*sizeof(wchar_t)); + for (i=0; i