[英]“Unsupported non-primitive compare” on Chrome profiler
我的應用程序存在瓶頸,
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;
}
}
}
以下是以下情況的屏幕截圖:
在這里,我們可以更詳細地看到瓶頸:
這段代碼出了什么問題?
Crankshaft無法優化它,因為它必須將rows[i-1]
轉換為布爾值,並且它不知道如何在不進行去優化的情況下這樣做。 也許這會更好?
curr[key] = i > 0 ? rows[i-1] : false;
我發現Chrome並不總是在找到這個特定問題的行時間,也不會發出最耗時的行。 就我而言,這個錯誤總是發生在時間比較中。
如果將行[i] .date> dt更改為rows [i] .date.getTime()> dt.getTime(),警告會消失嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.