我的应用程序存在瓶颈,
Chrome正在告诉问题是Unsupported non-primitive compare
,我不确定这是什么意思。
这里是问题的确切代码(见第6行)
for (var key in this.gdata) {
var rows = this.gdata[key];
for (var i = 0; i < rows.length; i++) {
if (i === 0) first[key] = rows[i];
if (rows[i].date > dt) {
curr[key] = i > 0 && rows[i - 1]; // <---- problem is here
next[key] = rows[i];
break;
}
}
}
以下是以下情况的屏幕截图:
在这里,我们可以更详细地看到瓶颈:
此代码有什么问题?
答案 0 :(得分:0)
Crankshaft无法对其进行优化,因为它必须将rows[i-1]
转换为布尔值,并且在不进行去优化的情况下不知道如何执行此操作。也许这会更好?
curr[key] = i > 0 ? rows[i-1] : false;
答案 1 :(得分:0)
我发现Chrome并不总是为发现这个特定问题的行计时,也不会发出最耗时的行。 就我而言,这个错误总是发生在时间比较中。
如果您更改行[i]。日期&gt; dt to rows [i] .date.getTime()&gt; dt.getTime()警告会消失吗?