前言
每個瀏覽器新版本釋出,都號稱效能有顯著提升,並且市面有各種測試工具,測試結果也是大相徑庭,比如下面這篇文章:
https://www.oschina.net/news/97924/browser-benchmark-battle
測試結果就很有意思,請看下如下兩幅截圖:
一言以蔽之:Google 的測試引擎 Chrome 勝,Mozilla 的測試引擎 Firefox 勝!
這樣的測試結果不免讓人大跌眼鏡,這裡面的水分也不少阿,至少對自家的瀏覽器有優化來著。
公平的比賽
最近在優化 FineUIPro 的表格效能,一般來說表格行數在 100 條之內都不會有問題。但為了效能調校,我們將表格行增加到 500 多行,列增加到 20 多列,並且行高不固定,來測試下各個瀏覽器的效能。
測試使用的電腦是 MacBook Pro 筆記本(英特爾 i7-8750H,32GB記憶體,512GB SSD),單獨拆分出一個新的 256GB 分割槽用來安裝 Windows 10 Pro(64位)系統,並更新至最新補丁。
參與測試的瀏覽器都是最新版,分別為:
- Chrome 75
- Firefox 68
- Edge 44
- IE11
測試頁面程式碼如下:
<!DOCTYPE html> <html> <head> <title></title> <script> var __STARTTIME = new Date(); </script> </head> <body> <form id="form1" runat="server"> <f:PageManager ID="PageManager1" AutoSizePanelID="Grid1" runat="server" /> <f:Grid ID="Grid1" IsFluid="true" CssClass="blockpanel" Margin="20px" ShowBorder="true" ShowHeader="true" Title="表格(23列,500行,行高不同)" EnableCollapse="false" runat="server" DataKeyNames="Id" EnableCheckBoxSelect="true" KeepCurrentSelection="true"> <Columns> <f:RowNumberField /> <f:BoundField Width="80px" DataField="ID" HeaderText="標識" /> <f:BoundField Width="100px" DataField="Name" HeaderText="姓名" /> ...... </Columns> <Listeners> <f:Listener Event="render" Handler="onGridRender" /> </Listeners> </f:Grid> </form> <script> function onGridRender() { F.ui.Grid1.setTitle('表格(23列,500行,行高不同) - 渲染:' + ((new Date() - __STARTTIME) / 1000).toFixed(2)); } </script> </body> </html>
這裡面有兩個關鍵點:
1. 在 <head> 標籤中記錄一個開始時間。
2. 在表格的渲染完成事件(render)中記錄一個結束時間,並渲染耗時更新到表格標題欄。
下面是測試結果:
Firefox:
Chrome:
Edge:
IE11:
本來在我心目中 Chrome 應該是最快的,實際開發中也一直在用 Chrome ,但是結果卻很意外。下面對上述結果進行一個綜述:
瀏覽器 | 表格渲染需要的時間(秒) |
Firefox | 1.2 |
Chrome | 2.7 |
Edge | 5.1 |
IE11 | 9.6 |
這也就來到了本文標題的結論,在我這個特定頁面的測試中:
Firefox的效能是Chrome的2倍,Edge的4倍,IE11的6倍!
你也可以自己試一試,看看是不是Firefox要比Chrome快,線上測試地址:
https://pro.fineui.com/#/grid/_grid_many_columns.aspx
後記
每次關於瀏覽器的對比都會引來不同的聲音,沒關係,所謂蘿蔔青菜各有所愛,效能並不是瀏覽器的全部,並且這裡的效能測試也只是具體到一個特定頁面的載入速度,可能和你的實際瀏覽體驗大相徑庭。
不過就本測試案例而已,Firefox的效能確實優於Chrome很多,就在結束本文的時候,我還發現另外一個有趣的現象,那就是選中行的延遲:
1. 在Chrome選中一行時,可以感覺到明顯的卡頓
2. 在Firefox選中一行時,非常絲滑,幾乎沒有卡頓
Chrome:
Firefox:
這又該作為解釋,因為是相同的程式碼相同的邏輯,不至於 Chrome 比 Firefox 差那麼多吧,這也算是一個開放的問題,等後期我有了進一步的發現,再回來。
至於上面 FineUIPro 測試頁面的效能,我還在進一步調優,你也可以過段時間回來看看,我會進一步分享調優的過程和結果。
不忘初心,砥礪前行!