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