我对来自C#的Java语言很陌生。今天,我在几个小技巧上用JS做了一个非常基本的性能测试,以了解性能如何与C#相匹配。
令我惊讶的是,以下代码在不同的小提琴上以不同的性能运行!
var start = performance.now();
var iterations = 100000000;
for (var i = 0; i < iterations; i++)
{
var j = i * i;
}
var end = performance.now();
var time = end - start;
alert('Execution time: ' + time);
https://jsfiddle.net/sfcu2vo6/4/
在大多数网站上,大约需要3秒钟,而在Jsfiddle上,大约需要80毫秒!
秘密是什么?
更新
下一步,我在html文件中编写了相同的代码,并在chrome中亲自执行。
<html>
<head></head>
<body>
<script>
var start = performance.now();
var iterations = 100000000;
for (var i = 0; i < iterations; i++)
{
var j = i * i;
}
var end = performance.now();
var time = end - start;
alert('Execution time: ' + time);
</script>
</body>
</html>
这需要3秒钟以上!说真的,为什么JsFiddle更快?
更新2
它变得更加有趣! 我将这个代码另存为我的.htm文件,并在桌面上以不同的名称! 它现在像小提琴一样运行约80毫秒!另一个具有完全相同的代码,大约像其他小提琴一样运行3秒钟!我完全糊涂了!有人可以尝试一下吗?
更新3
好吧!我放心了!快速的原因是将代码包装在window.onload = function() {
中。作为一个初学者,我犯了一个非常初学者的错误!
答案 0 :(得分:1)
如果在执行此代码时在Chrome performance tab中进行跟踪,您会发现花费的大部分时间都在es6console.com的代码束中,而不是函数中。
我没有深入研究他们在做什么,但这可能与es6console使用Babel转换代码这一事实有关。通常,最好不要依赖小提琴来进行性能测试,因为有多种方法可以在代码之上增加额外的开销。