pid_t pid; timeit(s, switch (pid = fork()) { case 0: exit(EXIT_SUCCESS); case -1: perror("fork() error:"); exit(EXIT_FAILURE); default: assert(wait(NULL) == pid); } );
pthread_t tid; int e; timeit(s, if ((e = pthread_create(&tid, NULL, f, NULL))) { printf("pthread_create() failed with error %d.\n", e); return EXIT_FAILURE; } if ((e = pthread_join(tid, NULL))) { printf("pthread_join() failed with error %d.\n", e); return EXIT_FAILURE; } );
#define iters 2000 static void * f(void *) { return NULL; } int main(int argc, char * argv[]) { int i; time_t s, oh; timeit(oh,); printf("%d usec loop overhead for %d iterations, %g usec/iter.\n", oh, iters, ((double) oh)/((double) iters)); // fork timing code printf("%g usec per fork() call for %d calls.\n", ((double) (s - oh))/((double) iters), iters); // thread timing code printf("%g usec per pthread_create() call for %d calls.\n", ((double) (s - oh))/((double) iters), iters); return EXIT_SUCCESS; }
cl date Thu Mar 15 14:42:55 EST 2001 cl uname -a SunOS clayton 5.7 Generic_106541-11 sun4u sparc SUNW,Ultra-5_10 cl g++ -o forktime forktime.cc -lpthread cl forktime Loop overhead is 79 usec for 2000 iterations, 0.0395 usec/iteration. Time per fork() call for 2000 calls: 7817.5 usec. Time per pthread_create() call for 2000 calls: 104.193 usec. cl forktime Loop overhead is 79 usec for 2000 iterations, 0.0395 usec/iteration. Time per fork() call for 2000 calls: 7864.8 usec. Time per pthread_create() call for 2000 calls: 109.993 usec. cl CC -o forktime forktime.cc -lpthread cl forktime Loop overhead is 19 usec for 2000 iterations, 0.0095 usec/iteration. Time per fork() call for 2000 calls: 7803.37 usec. Time per pthread_create() call for 2000 calls: 82.0435 usec. cl forktime Loop overhead is 19 usec for 2000 iterations, 0.0095 usec/iteration. Time per fork() call for 2000 calls: 7825.22 usec. Time per pthread_create() call for 2000 calls: 103.33 usec. cl
ro date Thu Mar 15 14:43:42 EST 2001 ro uname -a Linux rockhopper.monmouth.edu 2.2.16-22smp #1 SMP Tue Aug 22 16:39:21 EDT 2000 i686 unknown ro g++ -o forktime forktime.cc -lpthread ro forktime Loop overhead is 22 usec for 2000 iterations, 0.011 usec/iteration. Time per fork() call for 2000 calls: 497.743 usec. Time per pthread_create() call for 2000 calls: 102.731 usec. ro forktime Loop overhead is 22 usec for 2000 iterations, 0.011 usec/iteration. Time per fork() call for 2000 calls: 515.471 usec. Time per pthread_create() call for 2000 calls: 103.155 usec.
mo date Thu Mar 15 14:46:00 EST 2001 mo uname -a OSF1 moncol.MONMOUTH.EDU V5.1 732 alpha mo cxx -o forktime forktime.cc -lpthread mo forktime Loop overhead is 0 usec for 2000 iterations, 0 usec/iteration. Time per fork() call for 2000 calls: 40317.3 usec. Time per vfork() call for 2000 calls: 29895.1 usec. Time per pthread_create() call for 2000 calls: 766.591 usec. mo forktime Loop overhead is 0 usec for 2000 iterations, 0 usec/iteration. Time per fork() call for 2000 calls: 40083.4 usec. Time per vfork() call for 2000 calls: 30122.1 usec. Time per pthread_create() call for 2000 calls: 902.331 usec.
This page last modified on 10 April 2001.