Javascript Mozilla Firefox性能缓慢

Javascript Mozilla Firefox性能缓慢,javascript,firefox,Javascript,Firefox,我有以下代码,用于自定义表排序预处理 var tstart = performance.now(); var sortablearr = new Array(Math.floor((activeTRTable.rows.length / 2))); var arr_i = 0; console.log("Starting preprocessing...") //0 index is table head var t1buff = 0 var t2buff = 0 var t3buff = 0

我有以下代码,用于自定义表排序预处理

var tstart = performance.now();
var sortablearr = new Array(Math.floor((activeTRTable.rows.length / 2)));
var arr_i = 0;

console.log("Starting preprocessing...")
//0 index is table head
var t1buff = 0
var t2buff = 0
var t3buff = 0
for (i = 1; i < activeTRTable.rows.length; i += 2) {
    var t0 = performance.now();

    var x = parseFloat(activeTRTable.rows[i].cells[DURATIONTYPE].innerText);
    var y = parseFloat(activeTRTable.rows[i].cells[DURATIONTYPE].innerText);

    var t1 = performance.now();
    t1buff += (t1 - t0)

    var content = new Array(4)

    var t2 = performance.now();
    t2buff += (t2 - t1)

    content[TABLEITEM] = activeTRTable.rows[i]
    content[HIDDENDETAILITEM] = activeTRTable.rows[i + 1]
    content[HIDDENDETAILITEM + 1] = x
    content[HIDDENDETAILITEM + 2] = y
    sortablearr[arr_i] = content
    arr_i += 1

    var t3 = performance.now();
    t3buff += (t3 - t2)
}
var tpreprocessed = performance.now();
console.log("Preprocessing ended in " + (tpreprocessed - tstart) + " milliseconds.")
console.log("T1B: " + t1buff)
console.log("T2B: " + t2buff)
console.log("T3B: " + t3buff)
Internet Explorer

Preprocessing ended in 372.7204875779862 milliseconds.
T1B: 248.5273986186603
T2B: 17.503554555074515
T3B: 66.14627339602884
边缘

Preprocessing ended in 457.5451515628629 milliseconds.
T1B: 320.98263165675325
T2B: 9.163721063269804
T3B: 91.9268633019874
Preprocessing ended in 51.73499999999876 milliseconds.
T1B: 33.16500000007545
T2B: 4.495000000026266
T3B: 7.229999999955908
谷歌浏览器

Preprocessing ended in 457.5451515628629 milliseconds.
T1B: 320.98263165675325
T2B: 9.163721063269804
T3B: 91.9268633019874
Preprocessing ended in 51.73499999999876 milliseconds.
T1B: 33.16500000007545
T2B: 4.495000000026266
T3B: 7.229999999955908
Mozilla Firefox(55.0.3(32位))

发生什么事了!?如何为mozilla修复此代码


单元格[DURATIONTYPE]。innerText
只包含简单的浮点数XX.XX,四舍五入为2位小数(即43.21)。

可以肯定,访问DOM(
activeTRTable.rows[i]。单元格[DURATIONTYPE]。innerText
)和parseFloat的速度很慢

引用MDN(重点矿山)

HTMLTableElement.rows只读属性返回表中所有行的活动HTMLCollection

我假设它是在您访问该属性时生成的,并且没有随时为您准备好。您不应该直接处理DOM,而应该将所有内容缓存在您自己的数据结构中,并将DOM视为只写


编辑:作为一种快速修复方法,请尝试在循环之前缓存
属性。但是,
cells
属性的行为类似。

可以肯定,访问DOM(
activeTRTable.rows[i].cells[DURATIONTYPE].innerText
)和而不是parseFloat的速度很慢

引用MDN(重点矿山)

HTMLTableElement.rows只读属性返回表中所有行的活动HTMLCollection

我假设它是在您访问该属性时生成的,并且没有随时为您准备好。您不应该直接处理DOM,而应该将所有内容缓存在您自己的数据结构中,并将DOM视为只写


编辑:作为一种快速修复方法,请尝试在循环之前缓存
属性。但是,
单元格
属性的行为类似。

是的,部分正确。这是由那部分造成的。但缓存行似乎并没有真正的帮助。相反,将.innerText更改为.innerHTML起到了神奇的作用。Wohoo,预处理在37.97毫秒内结束。是的,你部分正确。这是由那部分造成的。但缓存行似乎并没有真正的帮助。相反,将.innerText更改为.innerHTML起到了神奇的作用。哇,预处理在37.97毫秒内结束。