I think you led me to the right direction: nanosecond.
I used the following script and compared the results with the original code. When averaging differences of 100 seconds (each script), the original comes out a bit better, but when averaging diffs of 300 seconds, the new script is better.
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", gettim +eofday)); } 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", gettim +eofday)); } return @time_test; }
The averages:
# 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
I believe I cannot get better results without atomic clock. Correct me if I’m wrong.
Anyway, thanks for the help and your time!
In reply to Re^4: The most precise second (timer)
by tukusejssirs
in thread The most precise second (timer)
by tukusejssirs
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |