There’s a lot of anecdotal evidence out there about what to do and what not to do. Standard wisdom says that malloc is expensive, for example, and realloc is even worse. But for all of the times I’ve seen people say this, I haven’t seen any concrete numbers.
So, let’s make some.
I intend to keep this post updated as a growing list of functions from glibc, to show how they compare to each other, and how efficient they are.
Loop a million times running each function once, and analysed using kcachegrind
sprintf (100 bytes, 5 variables) 1,752 pthread_create 1,115 fclose 575 fopen 527 pthread_detach 405 malloc 101 free 84 pthread_mutex_lock (always available) 31 pthread_mutex_init 31 pthread_mutex_unlock 29 gettimeofday 12 pthread_mutex_destroy 10 time 8 close 7 open 7