use 5.010; use threads; use Time::HiRes qw(time); my $data = 'x' x (500 * 1024**2); my $t = time; for my $n ( 1 .. 100 ) { threads->create( sub { substr( $data, 4096 * $_ + $n, 1 ) |= 1 for 0 .. 124; } )->join; } say time - $t; __END__ 164.842848062515 #### use 5.010; use threads; use Time::HiRes qw(time); my $t = time; for my $n ( 1 .. 100 ) { threads->create( sub { my $data = 'x' x (500 * 1024**2); substr( $data, 4096 * $_ + $n, 1 ) |= 1 for 0 .. 124; } )->join; } say time - $t; __END__ 172.88907790184