Xeon AMD64 single process, empty loop 420,000/s 360,000/s two processes, empty loop 330,000/s 220,000/s single process, gettimeofday 230,000/s 110,000/s two processes, gettimeofday 180,000/s 87,000/s #### #!perl -slw use strict; use threads; use POSIX qw( WNOHANG ); use Time::HiRes qw(gettimeofday); use Inline C => <<'END_OF_CODE'; #include void yield_me() { sched_yield(); } END_OF_CODE my (@time,$a); sub thread{ while (1) { # gettimeofday(); yield_me() } } my @forks = map{ if (my $pid=fork){waitpid(-1,WNOHANG)}elsif($pid==0){thread()}else{die "Cannot fork"} } 1 .. 10; ; #### Xeon AMD64 single process, empty loop 865,000/s 550,000/s two processes, empty loop 845,000 525,000/s single process, gettimeofday 345,000 130,000/s two processes, gettimeofday 340,000 125,000/s