Messages in this thread | | | Date | Sun, 26 Apr 1998 20:23:18 -0400 (EDT) | From | "Richard B. Johnson" <> | Subject | faster strcpy() |
| |
For all those who are so sure of themselves:
Script started on Sun Apr 26 20:11:46 1998 # cat xxx.c #include <stdio.h> #include <string.h> #include <signal.h>
#define LEN 0x1000
static char source[LEN]; static char destin[LEN]; int trg; long count;
void stop(int unused) { printf("Count = %ld\n", count); fflush(stdout); trg = 0; } main() { int i; memset(source, 0x20, LEN-1); i = LEN - 1; for(;;) { source[i] = (char) 0x00; printf("Length = %d\n", i); i -= 64; if(i <=0 ) exit(0); printf("Normal strcpy() "); (void)signal(SIGALRM, stop); trg = 1; count = 0L; alarm(1); while(trg) { count++; strcpy(destin, source); } printf("Strange strcpy() "); (void)signal(SIGALRM, stop); trg = 1; count = 0L; alarm(1); while(trg) { count++; memcpy(destin, source, strlen(source) + 1); } } return 0; }
# gcc -O2 -o xxx xxx.c # xxx Length = 4095 Normal strcpy() Count = 32504 Strange strcpy() Count = 15352 Length = 4031 Normal strcpy() Count = 32495 Strange strcpy() Count = 15733 Length = 3967 Normal strcpy() Count = 33089 Strange strcpy() Count = 15831 Length = 3903 Normal strcpy() Count = 33883 Strange strcpy() Count = 16072 Length = 3839 Normal strcpy() Count = 34473 Strange strcpy() Count = 16506 Length = 3775 Normal strcpy() Count = 34723
# echo Note that normal strcpy copies about twice as many strings in Note that normal strcpy copies about twice as many strings in # echo one second as does strlen + memcpy. one second as does strlen + memcpy. # cat /proc/cpuinfo processor : 0 cpu family : 6 model : Pentium II (Klamath) vendor_id : GenuineIntel stepping : 3 fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov mmx bogomips : 266.24
processor : 1 cpu family : 6 model : Pentium II (Klamath) vendor_id : GenuineIntel stepping : 3 fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov mmx bogomips : 266.24
# exit exit
Script done on Sun Apr 26 20:14:18 1998
The 'C' library is glibc-2.0.5. Case closed.
Cheers, Dick Johnson ***** FILE SYSTEM MODIFIED ***** Penguin : Linux version 2.1.92 on an i586 machine (66.15 BogoMips). Warning : It's hard to remain at the trailing edge of technology.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |