Sto realizzando un benchmark sugli algoritmi di compressione e mi sono sorti alcuni dubbi.
Pongo un esempio per facilitare le cose: ho un file che si chiama access2.log e ho una copia di questo dentro ad una directory di nome a
codice:
[prometeus@helvete:/mnt/test/temp]$ ls -l access2.log a
-rwxr-xr-x 1 prometeus users 22M Dec 11 10:57 access2.log
a:
total 22M
-rwxr-xr-x 1 prometeus users 22M Dec 11 10:58 access2.log
ora vediamo un paio di operazioni.
codice:
[prometeus@helvete:/mnt/test/temp]$ time bzip2 -1 -k access2.log
real 0m15.368s
user 0m12.709s
sys 0m0.136s
[prometeus@helvete:/mnt/test/temp]$ time bzip2 -1 -kc access2.log > yep2.bz2
real 0m20.508s
user 0m12.704s
sys 0m0.167s
[prometeus@helvete:/mnt/test/temp]$ time tar cf - a | bzip2 -1 -kc > yep.bz2
real 0m16.717s
user 0m12.692s
sys 0m0.253s
Come potete vedere il valore real subisce delle visibili variazione anche se le operazioni fatte sono simili (le prime due sono praticamente identiche). E' vero che non ho lanciato questi comandi in un ambiente imperurbato (avevo x aperto e magari switchavo da una finestra all'altra...e ovviamente quando farò il benchmark non sarò certo in una situazione del genere), ma noto anche che invece i valori "user" siano vicinissimi (scarti dell'ordine dello 0,1%).
A questo punto mi sorge il dubbio: quando dovrò analizzare le prestazioni di tali algoritmi dovrò prendere in considerazione il valore "user", "real" o "user + sys"?.
Dal man del binario time (non del built-in della bash)
si evince, dalla enumerazione dei possibili formati di output, ciò:
codice:
Time
%E Elapsed real time (in [hours:]minutes:seconds).
%e (Not in tcsh.) Elapsed real time (in seconds).
%S Total number of CPU-seconds that the process spent in kernel mode.
%U Total number of CPU-seconds that the process spent in user mode.
%P Percentage of the CPU that this job got, computed as (%U + %S) / %E.
A questo punto mi verrebbe da scartare il valore "real", poichè è comunque perturbabile, e prenderei in considerazione "user + sys", poichè sono valori imperurbabilti da altri fattori, dato che sono riferiti esclusivamente al tal processo.
Cosa consigliereste voi?