#include #include #include #include #include #define ITERATIONS 100000000 #define THE_LOCALE "en_US.UTF-8" int main(int argc, char *argv[]) { int i; char *str1 = "abcdefghijklmnop1"; char *str2 = "abcdefghijklmnop2"; char *newlocale; struct timeval t1,t2,t3; double elapsed_strcmp,elapsed_strcoll; if( (newlocale = setlocale(LC_ALL,THE_LOCALE)) == NULL ) { printf("error setting locale!\n"); exit(1); } else { printf("locale set to: %s\n",newlocale); } gettimeofday(&t1,NULL); for(i=0; i < ITERATIONS; i++) { if (strcmp(str1,str2) == 0) printf("unexpected equality\n"); } gettimeofday(&t2,NULL); for(i=0; i < ITERATIONS; i++) { if (strcoll(str1,str2) == 0) printf("unexpected equality\n"); } gettimeofday(&t3,NULL); elapsed_strcmp = (t2.tv_sec * 1000000.0 + t2.tv_usec) - (t1.tv_sec * 1000000.0 + t1.tv_usec); elapsed_strcoll = (t3.tv_sec * 1000000.0 + t3.tv_usec) - (t2.tv_sec * 1000000.0 + t2.tv_usec); printf("strcmp time elapsed: %.0f us\n",elapsed_strcmp); printf("strcoll time elapsed: %.0f us\n",elapsed_strcoll); return 0; }