use strict; use warnings; use Math::BigFloat; use Time::HiRes qw(gettimeofday sleep nanosleep); ... sub old_script { my $max = $_[0]; my @time_test; my $start = time(); for (my $i = 0; $i < $max; $i++) { $start += 1; sleep $start - time(); $time_test[$i] = Math::BigFloat->new(sprintf("%d.%06d", gettimeofday)); } return @time_test; } sub new_script { my $max = $_[0]; my @time_test; for (my $i = 0; $i < $max; $i++) { nanosleep (1000000000); $time_test[$i] = Math::BigFloat->new(sprintf("%d.%06d", gettimeofday)); } return @time_test; } #### # 100 s each script old_script_values_avg : 1.000479131313131313131313131313131313131 new_script_values_avg : 1.001016101010101010101010101010101010101 # 300 s each script old_script_values_avg : 0.9974391538461538461538461538461538461538 new_script_values_avg : 1.000457983277591973244147157190635451505