iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Modern Web

前輩說Laravel不難,好啊那就1人前後端試試看啊系列 第 14

Chrome用什麼來跑我們的JS:底層的底層:V8 & Turbofan筆記-Day13

  • 分享至 

  • xImage
  •  

中秋節快樂!連假還是要脫離正軌一下,繼續來聊聊在柏林參加 WWC23的筆記。

今天是這場:Things I learned while writing high-performance JavaScript applications

可惜沒有錄影,回去看了一下我的筆記(AKA 相片)
大部分的內容都忘了(掩面),但想來探討一下講者提到優化JS時這個套件:to-fast-properties
套件的敘述:

Force V8 to use fast properties for an object

啥是V8啊啊啊(掀桌)
發現中文討論這個套件的文件少之又少,可是這套件一週有3000萬的下載量欸!(大概是一些套件的依賴套件)

https://ithelp.ithome.com.tw/upload/images/20230929/201402471YofMgEFTm.png

爬了一下文章...

什麼是 V8 ? Turbofan ?

V8 是瀏覽器用來執行JS的引擎。
而Turbofan是V8裡面的JS優化編譯器。
這兩者主要就是Chrome在使用。

但別忘了! Chrome還是有6成的市佔率啊!

理解 Turbofan 優化JavaScript

在這個影片:Understanding the V8 JavaScript Engine
清楚介紹了瀏覽器如何解析JS code並做優化,
可以利用Turbofan的Inline-Caching機制,用Monomorphic單態的變數,優化JS的解析速度

看不懂?還有這篇:Intro to JavaScript performance optimization

為了讓Turbofan發揮最大效用,在寫JS的時候我們可以...

  • 1.如果確定好Property數量,就可以先做好初始化:
//✅ 這樣效能比較好
const obj1 = {
  x: 2,
  y: 4.1,
};

//❌ 這樣比較慢
const obj2 = {
  x: 4,
};
obj2.y = 2.2;
  • 2.不要混合不同類型
    1. 如果知道Array的長度,可以先告訴V8你的Array長度new Array(max)

How does V8 optimise the creation of very large arrays?

這邊還有更多JS 優化的技巧,希望之後可以一一來探討:
Addy Osmani :: The Cost of JavaScript

以上!

記得講者在說優化,就提到大家都要他去複習Algorithms and Data Structures Tutorial - Full Course for Beginners
想到我udemy JS algorithm課程上到一半,因為其他計畫被我暫停了...
希望用JS 理解algorithm 可以變成明年的鐵人題目...(遠目)

未完成的一篇!中秋節快樂啦!


上一篇
網站的演進-Web 1.0 到3.0, HTTP的創始人演講筆記-Day12
下一篇
Laravel: Model 玩轉資料庫&資料庫設計:ORM-Day14
系列文
前輩說Laravel不難,好啊那就1人前後端試試看啊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言