我使用这个 nodejs 模块来测量/分析我的应用程序的部分执行需要多长时间。
// polyfill for window.performance.now
var performance = global.performance || {}
var performanceNow =
performance.now ||
performance.mozNow ||
performance.msNow ||
performance.oNow ||
performance.webkitNow ||
function(){ return (new Date()).getTime() }
// generate timestamp or delta
// see http://nodejs.org/api/process.html#process_process_hrtime
function hrtime(previousTimestamp){
var clocktime = performanceNow.call(performance)*1e-3
var seconds = Math.floor(clocktime)
var nanoseconds = Math.floor((clocktime%1)*1e9)
if (previousTimestamp) {
seconds = seconds - previousTimestamp[0]
nanoseconds = nanoseconds - previousTimestamp[1]
if (nanoseconds<0) {
seconds--
nanoseconds += 1e9
}
}
return [seconds,nanoseconds]
}
function clock(start) {
if ( !start ) return hrtime();
var end = hrtime(start);
return Math.round((end[0]*1000) + (end[1]/1000000));
}
module.exports = clock;
用法非常简单:
time = benchmark();
启动计数器并time = benchmark(time);
测量自上次调用以来的持续时间。
这包括当我的应用程序需要在浏览器上运行时的 polyfill。
该功能似乎运行良好,但它严重(并且具有讽刺意味地)影响性能,尤其是(并且不出所料)在 Internet Explorer 中。
我怎样才能让它更快?