A funcionalidade de REPORTTIME
parece ser codificada para comparar usertime+systime
.
O código-fonte zsh relevante para a funcionalidade REPORTTIME
:
#ifdef HAVE_GETRUSAGE
reporttime -= j->procs->ti.ru_utime.tv_sec + j->procs->ti.ru_stime.tv_sec;
if (j->procs->ti.ru_utime.tv_usec +
j->procs->ti.ru_stime.tv_usec >= 1000000)
reporttime--;
return reporttime <= 0;
#else
{
clktck = get_clktck();
return ((j->procs->ti.ut + j->procs->ti.st) / clktck >= reporttime);
}
#endif
Como uma solução alternativa, você pode modificar seu zshrc para obter a funcionalidade de simalar para ter REPORTTIME
usando o tempo total de execução.
REPORTTIME_TOTAL=5
# Displays the execution time of the last command if set threshold was exceeded
cmd_execution_time() {
local stop=$(('date "+%s + %N / 1_000_000_000.0"'))
let local "elapsed = ${stop} - ${cmd_start_time}"
(( $elapsed > $REPORTTIME_TOTAL )) && print -P "%F{yellow}${elapsed}s%f"
}
# Get the start time of the command
preexec() {
cmd_start_time=$(('date "+%s + %N / 1.0e9"'))
}
# Output total execution
precmd() {
if (($+cmd_start_time)); then
cmd_execution_time
fi
}
Infelizmente, este comando fornece apenas o tempo total de execução. Ele não divide o tempo de execução no tempo do usuário e do sistema.