【发布时间】:2014-08-11 08:11:19
【问题描述】:
所有三个操作都在执行相同的操作。 任何人都可以解释不同性能的原因吗?
console.time('first');
for(guid in ALLGUID){
$('.'+guid).find('.cell-taskname').find('.cell-text').text()
}
console.timeEnd('first');
console.time('second');
for(guid in ALLGUID){
$('.'+guid).find('.cell-taskname .cell-text').text()
}
console.timeEnd('second');
console.time('third');
for(guid in ALLGUID){
$('.'+guid+' .cell-taskname .cell-text').text()
}
console.timeEnd('third');
首先:~3500.000ms
秒:~3700.000ms
第三个:~38000.000ms(是的,它是 38 秒。)
场景说明:我有一个巨大的表,我正在遍历所有表行。这里 Guid 是表行的唯一键和类名。 cell-taskname 是 table-row 的每个第一列中的 div,而 .cell-text 是包含文本的 span。
【问题讨论】:
-
这里我无法解释性能差异,但是如果 GUID 是唯一键,为什么将其用作类名而不是元素 id?按 id 选择比按类选择要快得多。
-
不只是一点点:jsperf.com/getelementbyid-id-vs-queryselector-class(你甚至看不到类选择器的栏,
getElementById让你不知所措)。 -
@pdw 以上问题是我的问题,它只是试图解释我的问题。它是我的问题的极其简化的版本。顺便说一句,我正在使用 ID 选择器。 TY
-
我知道这个事实 ;)
标签: javascript jquery performance