MCE::Hobo uses MCE::Shared to retrieve data during reaping.
MCE::Child uses MCE::Channel, no shared-manager.
Version Cygwin Windows Linux macOS FreeBSD
MCE::Child 1.842 19.099s 17.091s 0.965s 1.534s 1.229s
MCE::Hobo 1.842 20.514s 19.594s 1.246s 1.629s 1.613s
P::FM 1.20 19.703s 19.235s 0.875s 1.445s 1.346s
MCE::Child 1.842 20.426s 18.417s 1.116s 1.632s 1.338s Moo loaded
MCE::Hobo 1.842 21.809s 20.810s 1.407s 1.759s 1.722s Moo loaded
P::FM 2.02 21.668s 25.927s 1.882s 2.612s 2.483s Moo used
####
MCE::Child->init( posix_exit => 1, ... );
MCE::Hobo->init( posix_exit => 1, ... );
Version Cygwin Windows Linux macOS FreeBSD
MCE::Child 1.842 19.815s ignored 0.824s 1.284s 1.245s Moo loaded
MCE::Hobo 1.842 21.029s ignored 0.953s 1.335s 1.439s Moo loaded
##
##
use strict;
use warnings;
use Parallel::ForkManager;
use Time::HiRes 'time';
my $start = time;
my $pm = Parallel::ForkManager->new(10);
$pm->set_waitpid_blocking_sleep(0);
$pm->run_on_finish( sub {
my ($pid, $exit_code, $ident, $exit_signal, $core_dumped, $resp) = @_;
# print "child $pid completed: $ident => ", $resp->[0], "\n";
});
DATA_LOOP:
foreach my $data ( 1..2000 ) {
# forks and returns the pid for the child
my $pid = $pm->start($data) and next DATA_LOOP;
my $ret = [ $data * 2 ];
$pm->finish(0, $ret);
}
$pm->wait_all_children;
printf STDERR "duration: %0.03f seconds\n", time - $start;
##
##
use strict;
use warnings;
use MCE::Child 1.842;
use Time::HiRes 'time';
my $start = time;
MCE::Child->init(
max_workers => 10,
on_finish => sub {
my ($pid, $exit_code, $ident, $exit_signal, $error, $resp) = @_;
# print "child $pid completed: $ident => ", $resp->[0], "\n";
}
);
foreach my $data ( 1..2000 ) {
MCE::Child->create( $data, sub {
[ $data * 2 ];
});
}
MCE::Child->wait_all;
printf STDERR "duration: %0.03f seconds\n", time - $start;
##
##
use strict;
use warnings;
use MCE::Hobo 1.842;
use Time::HiRes 'time';
my $start = time;
MCE::Hobo->init(
max_workers => 10,
on_finish => sub {
my ($pid, $exit_code, $ident, $exit_signal, $error, $resp) = @_;
# print "child $pid completed: $ident => ", $resp->[0], "\n";
}
);
foreach my $data ( 1..2000 ) {
MCE::Hobo->create( $data, sub {
[ $data * 2 ];
});
}
MCE::Hobo->wait_all;
printf STDERR "duration: %0.03f seconds\n", time - $start;