mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 14:07:55 +00:00
parallel: Timings in --joblog now with milliseconds.
This commit is contained in:
parent
398e78e8cd
commit
76c477d94d
27
src/parallel
27
src/parallel
|
@ -1912,6 +1912,21 @@ sub usleep {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub hires_time {
|
||||||
|
# Returns time since epoch as float
|
||||||
|
|
||||||
|
if(not $Global::use{"Time::HiRes"}) {
|
||||||
|
if(eval "use Time::HiRes qw ( time );") {
|
||||||
|
eval "sub TimeHiRestime { return Time::HiRes::time };";
|
||||||
|
} else {
|
||||||
|
eval "sub TimeHiRestime { return time() };";
|
||||||
|
}
|
||||||
|
$Global::use{"Time::HiRes"} = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TimeHiRestime();
|
||||||
|
}
|
||||||
|
|
||||||
sub multiply_binary_prefix {
|
sub multiply_binary_prefix {
|
||||||
# Evalualte numbers with binary prefix
|
# Evalualte numbers with binary prefix
|
||||||
# k=10^3, m=10^6, g=10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24
|
# k=10^3, m=10^6, g=10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24
|
||||||
|
@ -3092,18 +3107,18 @@ sub set_pid {
|
||||||
|
|
||||||
sub starttime {
|
sub starttime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->{'starttime'};
|
return ((int(($self->{'starttime'})*1000))/1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_starttime {
|
sub set_starttime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $starttime = shift || time;
|
my $starttime = shift || ::hires_time();
|
||||||
$self->{'starttime'} = $starttime;
|
$self->{'starttime'} = $starttime;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub runtime {
|
sub runtime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->{'endtime'}-$self->{'starttime'};
|
return ((int(($self->{'endtime'}-$self->{'starttime'})*1000))/1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub endtime {
|
sub endtime {
|
||||||
|
@ -3113,7 +3128,7 @@ sub endtime {
|
||||||
|
|
||||||
sub set_endtime {
|
sub set_endtime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $endtime = shift || time;
|
my $endtime = shift || ::hires_time();
|
||||||
$self->{'endtime'} = $endtime;
|
$self->{'endtime'} = $endtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4881,7 +4896,7 @@ sub replace {
|
||||||
$s =~ s:^.*/([^/]+)/?$:$1:; # Remove dir from argument. If ending in /, remove final /
|
$s =~ s:^.*/([^/]+)/?$:$1:; # Remove dir from argument. If ending in /, remove final /
|
||||||
} elsif($replacement_string eq "{//}") {
|
} elsif($replacement_string eq "{//}") {
|
||||||
# Only load File::Basename if actually needed
|
# Only load File::Basename if actually needed
|
||||||
$Global::use{"File::Basename"} ||= eval "use File::Basename;";
|
$Global::use{"File::Basename"} ||= eval "use File::Basename; 1;";
|
||||||
$s = dirname($s); # Keep dir from argument.
|
$s = dirname($s); # Keep dir from argument.
|
||||||
} elsif($replacement_string eq "{/.}") {
|
} elsif($replacement_string eq "{/.}") {
|
||||||
$s =~ s:^.*/([^/]+)/?$:$1:; # Remove dir from argument. If ending in /, remove final /
|
$s =~ s:^.*/([^/]+)/?$:$1:; # Remove dir from argument. If ending in /, remove final /
|
||||||
|
@ -5111,7 +5126,7 @@ sub lock {
|
||||||
open $self->{'lockfh'}, ">", $self->{'lockfile'}
|
open $self->{'lockfh'}, ">", $self->{'lockfile'}
|
||||||
or ::die_bug("Can't open semaphore file $self->{'lockfile'}: $!");
|
or ::die_bug("Can't open semaphore file $self->{'lockfile'}: $!");
|
||||||
chmod 0666, $self->{'lockfile'}; # assuming you want it a+rw
|
chmod 0666, $self->{'lockfile'}; # assuming you want it a+rw
|
||||||
$Global::use{"Fcntl"} ||= eval "use Fcntl qw(:DEFAULT :flock);";
|
$Global::use{"Fcntl"} ||= eval "use Fcntl qw(:DEFAULT :flock); 1;";
|
||||||
while(not flock $self->{'lockfh'}, LOCK_EX()|LOCK_NB()) {
|
while(not flock $self->{'lockfh'}, LOCK_EX()|LOCK_NB()) {
|
||||||
if ($! =~ m/Function not implemented/) {
|
if ($! =~ m/Function not implemented/) {
|
||||||
print $Global::original_stderr
|
print $Global::original_stderr
|
||||||
|
|
Loading…
Reference in a new issue