49 lines
970 B
JavaScript
49 lines
970 B
JavaScript
'use strict';
|
|
|
|
var units = [
|
|
[ 'h', 3600e9 ],
|
|
[ 'min', 60e9 ],
|
|
[ 's', 1e9 ],
|
|
[ 'ms', 1e6 ],
|
|
[ 'μs', 1e3 ],
|
|
];
|
|
|
|
function formatHrTime(hrtime) {
|
|
if (!Array.isArray(hrtime) || hrtime.length !== 2) {
|
|
return '';
|
|
}
|
|
if (typeof hrtime[0] !== 'number' || typeof hrtime[1] !== 'number') {
|
|
return '';
|
|
}
|
|
|
|
var nano = hrtime[0] * 1e9 + hrtime[1];
|
|
|
|
for (var i = 0; i < units.length; i++) {
|
|
if (nano < units[i][1]) {
|
|
continue;
|
|
}
|
|
|
|
if (nano >= units[i][1] * 10) {
|
|
return Math.round(nano / units[i][1]) + ' ' + units[i][0];
|
|
}
|
|
|
|
var s = String(Math.round(nano * 1e2 / units[i][1]));
|
|
if (s.slice(-2) === '00') {
|
|
s = s.slice(0, -2);
|
|
} else if (s.slice(-1) === '0') {
|
|
s = s.slice(0, -2) + '.' + s.slice(-2, -1);
|
|
} else {
|
|
s = s.slice(0, -2) + '.' + s.slice(-2);
|
|
}
|
|
return s + ' ' + units[i][0];
|
|
}
|
|
|
|
if (nano > 0) {
|
|
return nano + ' ns';
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
module.exports = formatHrTime;
|