Apple瀏覽器Safari所使用的引擎Webkit,其JavaScriptCore採用了一種新的位元組碼(Bytecode)格式,舊的位元組碼格式是針對直譯器吞吐量的記憶體使用最佳化,而新格式的目的則是要提升記憶體使用效率,並允許將位元組碼快取在磁碟上。

在含有大量JavaScript程式碼的網站,像是網路論壇Reddit或是臉書,舊格式位元組碼占整個網站的記憶體使用量約為20%,而新的位元組碼則能減少使用大約一半的記憶體,少消耗約10%的記憶體用量。官方特別比較Reddit、Apple官網、臉書和Gmail四個網站,使用新舊格式的位元組碼所占的記憶體用量,說明記憶體用來減少情形。

以節省比例最多的Apple官網來說,位元組碼記憶體使用量從5.6MB下降到了2.71MB,減少52%的記憶體使用,另外,複雜的Gmail使用舊格式,位元組碼就會占用109.12MB記憶體,而使用新格式則僅需要65.96MB,雖然只有減少了40%,但是實際上記憶體卻省上43.16MB,原本位元組碼使用越多記憶體的網站,應用新格式後,便能節省越多的記憶體。

在效能方面,間接執行緒會增加直譯器分派的成本,但是由於考慮JavaScriptCore中位元組碼指令平均的複雜性,官方認為,這些新增的成本並不會對效能產生重大的影響。而由於更改位元組碼格式需要對整個引擎調整,因此官方也順便改進了位元組碼相關的基礎架構,近一步提高程式碼的類型安全、可讀性以及可維護性,因此整體來說,採用新的位元組碼格式帶來的好處很大。


Advertisement

更多 iThome相關內容