簡體   English   中英

Chrome探查器上的“不支持的非原始比較”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM