2015-10-09 62 views
0

有什麼方法可以找出JavaScript程序中實際使用內嵌緩存技術的訪問量和訪問量?還是主要通過內聯緩存提高整體性能?內聯緩存的好處

回答

0

如果你指的V8 Chrome page那麼你會在那裏找到它:

V8直接編譯的JavaScript源代碼轉換成機器代碼第一次執行時。沒有中間字節代碼,沒有解釋器。屬性訪問由內聯高速緩存代碼處理,可以在V8執行時使用其他機器指令修補。

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

+0

是的,我明白這一點。我認爲,與其他一些訪問相比,由於內聯緩存,某些訪問在性能方面將受益更多。例如,當Obj總是指向相同的隱藏類時,Obj.x被執行10000次。 我想區分這種訪問。 另外,你能幫我理解由於內聯緩存狀態的變化而引入的補丁嗎?例如,未初始化 - > premonomorphic - > monomorphic-> polymorphic-> megamorphic等。 – Monika

+0

@Monika: - 是的所有訪問都將受益。就缺點而言,很難說在你沒有明智地使用它之前有什麼缺點。你也可以閱讀這個[很好的參考](https://github.com/sq/JSIL/wiki/Optimizing-dynamic-JavaScript-with-inline-caches#why-are-you-using-an-inline-cache- in-javascript) –

+0

我一定會經歷它。另外,我知道對於每次訪問,都會添加3-4個額外的說明,以考慮在運行時考慮內聯緩存。真的嗎?它會不會爲正在執行的程序增加很多開銷,因爲程序中的訪問總數通常很大? – Monika