2013-03-26 79 views
1

,因爲我們已經知道,V8啓用內嵌的緩存以提高性能,JavaScript引擎V8內嵌的緩存

誰能解釋一下V8究竟它是如何工作對於提高性能?

如果顯示一個例子,那將會很好。

在此先感謝。

回答

2

Chrome V8 page

V8直接採取直接編譯JavaScript源代碼轉換爲機器代碼首先被執行時。沒有中間字節代碼,沒有解釋器。房產訪問是由可以與其他機器指令的V8執行修補聯高速緩存代碼來處理....

... V8通過預測,這[對象的優化屬性訪問]類也將用於在同一段代碼中訪問的所有未來對象,並使用類中的信息修補內聯緩存代碼以使用隱藏類。如果V8已經預測正確,則在單個操作中分配(或取出)該屬性的值。如果預測不正確,V8將修補代碼以刪除優化。

例如,JavaScript代碼從一個點對象訪問屬性x是:

point.x 

在V8中,用於訪問X生成的機器代碼是:

# ebx = the point object 
cmp [ebx,<hidden class offset>],<cached hidden class> 
jne <inline cache miss> 
mov eax,[ebx, <cached x offset>]