in reply to Re^3: The most precise second (timer)
in thread The most precise second (timer)
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!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: The most precise second (timer)
by haukex (Archbishop) on Nov 27, 2019 at 23:29 UTC | |
by tukusejssirs (Beadle) on Nov 28, 2019 at 11:33 UTC |