Вы, вероятно, получите лучшие результаты, а также более обслуживаемый код, если будете использовать код perl (times
или POSIX::times
) для получения системного / пользовательского времени.
$command="ls -lR";
@before{real,user,system,chuser,chsystem}=(time(),times());
system $command;
@after{real,user,system,chuser,chsystem}=(time(),times());
print "real @{[ $after{real}-$before{real} ]}\n";
print "user @{[ $after{chuser}-$before{chuser} ]}\n";
print "sys @{[ $after{chsystem}-$before{chsystem} ]}\n";
или версия POSIX:
use POSIX qw(times sysconf);
$clocks_per_second=POSIX::sysconf( &POSIX::_SC_CLK_TCK );
$command="ls -lR";
@before{real,user,system,chuser,chsystem}=(POSIX::times());
system $command;
@after{real,user,system,chuser,chsystem}=(POSIX::times());
printf "real %2.2f\n", ($after{real}-$before{real})/$clocks_per_second;
printf "user %2.2f\n", ($after{chuser}-$before{chuser})/$clocks_per_second;
printf "sys %2.2f\n", ($after{chsystem}-$before{chsystem})/$clocks_per_second;