Guide 開髮指南

找出性能殺手

在線服務的性能優化,是一項近乎迷信的工作。一群程序員對著一大堆不知所云的代碼,互相猜測是不是對方把cpu 都給用掉。花費大量時間記錄日誌,在海量的日誌裡日以繼夜地翻看,試圖找到性能殺手。

然而使用fibjs,這一切都將變得簡單起來。因為fibjs 有強大的cpu 和內存profiler 支持,而且使用十分方便。

記錄日誌

fibjs啟動cpu profiler極其簡單,啟動時增加--prof選項即可。缺省的日誌間隔是1000ms,隨著優化的深入,你會需要更高精度的分析日誌,此時可以使用--prof-interval設置間隔。以下的例子,每10ms記錄一次fibjs工作日誌。

1
fibjs --prof --prof-interval=10 main.js

處理日誌

運行正常結束,或者使用ctrl_c結束進程後,當前目錄下會生成一個日誌文件,文件名是fibjs-xxxx.log,此時,你可以使用--prof-process處理生成的日誌:

1
fibjs --prof-process fibjs-xxxx.log prof.svg

運行結束,使用瀏覽器打開prof.svg,即可查看此次日誌的火焰圖: prof 你可以點擊查看全尺寸的圖片,在全尺寸圖片中,你可以通過鼠標操作,查閱更詳細的信息:prof. svg

火焰圖解讀

生成的火焰圖中,每一個色塊,代表一個記錄點,色塊越長,表示被記錄的次數越多;每一行代表一層調用堆棧,層數越多表示調用的層數越多;調用堆棧的擺放,是倒置的,越靠下的色塊,越是最初的函數。

色塊的顏色有兩類,一類是紅色,一類是藍色。在fibjs 的profiler 裡,紅色代表JavaScript 運算,藍色代表io 操作或者Native 運算。根據你需要解決的問題不同,所需要關注的區域也會不同。比如你需要解決cpu 佔用過高的問題,此時需要關注紅色的色塊;而如果你的應用,cpu 佔用不高,但是響應卻比較慢,就就需要關注藍色的色塊。靠近頂部越大的色塊,越是需要關注和優化的重點。

👉 【快速開發桌面應用