gpt4 book ai didi

javascript - 测量 javascript X jQuery 性能

转载 作者:行者123 更新时间:2023-11-29 14:47:41 25 4
gpt4 key购买 nike

我正在测试 JS 和 jQuery 之间的速度差异。

速度 = document.getElementById('test'); - 0.048 毫秒

速度 = $('#test'); - 0.333 毫秒

好的.. 很明显为什么纯 JS 更快.. 但是,如果我测试这个:

var test = function(selector) {
var a = document.getElementById(selector);
}

test('test');

SPEED: 12.270ms

为什么? jquery 怎么能比他们更快?

最佳答案

JQuery 不能比 native getElementById 方法更快。可以自行查看jsperf .

为什么?因为 jQuery 必须将自己的对象处理添加到选择器 $('#...') 返回的对象列表中。

编辑

根据 sirrocco 的建议,我回答了这个问题。您指定的性能范围不正确。你的时间测量应该有一个错误。

我的测试:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="jquery.js"></script>

<script>
document.addEventListener("DOMContentLoaded", function(event) {
var start, end, i, time;
start = new Date().getTime();
for (i = 0; i < 500000; ++i) {
document.getElementById('test');
}
end = new Date().getTime();
time = end-start;
document.getElementById('res1').innerHTML = 'time = '+time+'ms';

start = new Date().getTime();
for (i = 0; i < 500000; ++i) {
$('#test');
}
end = new Date().getTime();
time = end-start;
document.getElementById('res2').innerHTML = 'time = '+time+'ms';

start = new Date().getTime();
for (i = 0; i < 500000; ++i) {
var test = function(selector) { var a = document.getElementById(selector); };
test('test');
}
end = new Date().getTime();
time = end-start;
document.getElementById('res3').innerHTML = 'time = '+time+'ms';
});
</script>
</head>
<body>
<pre>document.getElementById('test');</pre> <span id="res1">result</span></br>
</br>
<pre>$('#test');</pre> <span id="res2">result</span></br>
</br>
<pre> var test = function(selector) {
var a = document.getElementById(selector);
}
test('test');</pre> <span id="res3">result</span></br>
<span id="test">The element to find</span>
</body>
</html>

这不是世界上最漂亮的代码,但添加函数会修改浏览器优化循环的方式。在 corei7+FF31 上的结果是:

document.getElementById('test');

time = 2ms

$('#test');

time = 680ms

var test = function(selector) {
var a = document.getElementById(selector);
}
test('test');

time = 33ms

数量级不是你说的那些。但是直接调用native方法和调用调用native方法的函数是有区别的。

为什么?正如我之前所说,对于 jQuery,它必须添加自己的对象处理。对于使用函数的测试,有时间创建一个新的函数对象并调用它。

关于javascript - 测量 javascript X jQuery 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com