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 倍