簡體   English   中英

javascript 中的屬性與常量訪問

[英]Attribute vs constant access in javascript

我正在研究面向高性能的 web 組件,我懷疑是否值得在多次訪問之前將 object 屬性的值分配給常量。

我的意思是轉這個:

let counter = 0;
for (let i = 0, len = parentObject.myObject.items.length; i < len; i++) {
    // items is an array of integers
    counter += parentObject.myObject.items[i] ;
}

進入這個:

let counter = 0;
const { myObject } = parentObject;
const { items } = myObject;
for (let i = 0, len =items.length; i < len; i++) { 
    counter += items[i] ;
}

在 Python 中,此更改將對性能產生敏感影響。 但是我所做的測試(代碼在https://gist.github.com/Edorka/fbfb0778c859d8f518f0508414d3e6a2 )顯示沒有區別:

caseA total 124999750000
Execution time (hr): 0s 1.88101ms
caseB total 124999750000
Execution time (hr): 0s 1.117547ms

我懷疑我的測試是否錯誤,或者虛擬機是否針對這種我不知道的情況進行了優化。

更新:根據@George Jempty 的建議,我在https://jsperf.com/attribute-vs-constants對 JSPerf 進行了快速調整,但結果一直很不穩定。

嵌套屬性訪問是 JavaScript 中最常執行的操作之一。 您可以期望它會進行大量優化。

事實上,V8 引擎在運行時緩存object 屬性,因此手動緩存的性能優勢可以忽略不計。

jsperf.com 上的現場演示

沒有不同

結論:不用擔心!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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