我需要以毫秒为单位获得执行时间。
我最初在 2008 年问过这个问题。然后,接受的答案是使用新的 Date()。getTime()但是,我们现在都同意使用标准的performance.now() API 更合适。因此,我正在改变对此问题的接受答案。
var t0 = performance.now();
doSomething(); // <---- The function you're measuring time for
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")
NodeJs
:需要导入performance
类
console.time('someFunction');
someFunction(); // Whatever is timed goes between the two "console.time"
console.timeEnd('someFunction');
注意 :
传递给time()
和timeEnd()
方法的字符串必须匹配
( 计时器按预期完成)。
console.time()
文档:
getTime()方法返回自 1970 年 1 月 1 日午夜以来的毫秒数。
恩。
var start = new Date().getTime();
for (i = 0; i < 50000; ++i) {
// do something
}
var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);
<script>
var a = performance.now();
alert('do something...');
var b = performance.now();
alert('It took ' + (b - a) + ' ms.');
</script>
它适用于:
IE 10 ++
FireFox 15 ++
Chrome 24 ++
Safari 8 ++
Opera 15 ++
Android 4.4 ++
console.time
对你来说可行,但它是非标准的§ :
此功能是非标准功能,不符合标准。不要在面向 Web 的生产站点上使用它:它不适用于每个用户。 实现之间可能存在很大的不兼容性,并且行为可能在将来发生变化。
除了浏览器支持, performance.now
似乎有可能提供更准确的时序,因为它似乎是console.time
的简单版本。
Date
用于任何事情,因为它受 “系统时间” 变化的影响。这意味着当用户没有准确的系统时间时,我们将得到无效结果 - 如 “负时间” -
2014 年 10 月,我的系统时钟乱了, 猜猜是什么 .... 我打开了 Gmail,看到了我所有的一天的电子邮件 “ 0 分钟前发送”。我认为 Gmail 应该由 Google 的世界级工程师构建.......
(将你的系统时钟设置为一年前,然后转到 Gmail,这样我们都可以大笑。也许有一天我们会为 JS Date
设置一个耻辱之门 。)
Google Spreadsheet 的now()
函数也遇到了这个问题。
您将要使用的唯一时间Date
是当你想要显示的用户他的系统时钟的时间。不是当你想要得到的时间或测量任何东西。