TechEmpower 框架性能測試數據 – 新解讀

  • 2019 年 11 月 29 日
  • 筆記

面試了阿里、美團與滴滴後,我有了幾個重大發現…>>>

1. TechEmpower Framework Benchmark 介紹

TechEmpower 框架性能大比拼平台從 2013 年 3 月開始以來已經歷經了 18 輪測試,參與這個平台的框架平台產品也從一開始的 24 種增加到今天的 659 種! 可以說這個平台已經是業界的標準性能測試平台,在 Web 框架性能測試領域的地位大概能和 PassMark 在 CPU 性能測試領域的地位相當.

TechEmpower 自身提供的棒圖直觀地呈現框架的 Throughput (吞吐量, 即每秒處理請求數):

而 TechEmpower 在測試過程中還收集了其他類型的數據,包括:

  • Latency (時延 – 從發起請求到收到響應的平均時間)
  • Memory (記憶體佔用)
  • CPU (CPU 佔用百分比)

2. TFB VIS 可視化網站

最近出現了一個新網站提供了另外幾個數據的可視化呈現: https://ajdust.github.io/tfbvis/

這個網站打開是這樣的:

默認排序是吞吐量,但可以通過點擊列標題下面的空白部位切換排序列,比如點擊紅色箭頭指向部位按照時延排序:

可以選擇不同的 TFB 測試項目:

選擇顯示的框架:

遺憾的是目前該頁面只能支援兩個過濾條件:

3. ActFramework vs. Spring Framework

下面我們就來看看 Spring 和 Act 這兩種框架的各方面對比:

3.1 JSON 測試

為了方便大家理解,這裡解釋一下圖示的數據 (下面的圖示就省去解釋了):

框架

吞吐量

時延

記憶體佔用

CPU 佔用

Act

1022k

0.52ms

2G

53%

Spring

130K

5.29ms

6G

61 %

總結: 沒有涉及資料庫的情況下, Spring 比 Act

  • 佔用 3 倍的記憶體
  • 吞吐量大約為 1/8
  • 平均時延是 10 倍

3.2 Fortune 測試

總結: 在有資料庫和後端頁面生成的情況下, Spring 比 Act:

  • 佔用 3 倍記憶體
  • 吞吐量大約為 1/7
  • 平均時延大約為 5 倍

3.3 Query 測試

總結: 在多次查詢(每個請求過程中處理查詢資料庫 20 次)的情況下, Spring 比 Act:

  • 佔用 3 倍記憶體
  • 吞吐量大約為 1/5 到 1/2 (Spring WebFlux 在這個測試表現較好)
  • 平均時延大約為 3 到 8 倍

3.4 Update 測試

總結: 在多次更新(每個請求過程中更新資料庫 20 次)的情況下, Spring 比 Act:

  • 佔用 3 被記憶體
  • 吞吐量與平均時延和 Act 相當 (Spring WebFlux 在這個測試表現較好)

3.5 DB 測試

總結: 在單次查詢(每個請求處理過程查詢資料庫 1 次)的情況下, Spring 比 Act:

  • 佔用 3 倍記憶體
  • 吞吐量為 1/2 到 1/5
  • 平均時延大約為 3 到 10 倍