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;