Tauri 与 Electron 在 Git 客户端中的较量:性能基准测试
大多数跨平台桌面 Git 客户端都基于 Electron 构建:GitKraken、GitHub Desktop、GitFiend。GitSquid 是少数基于 Tauri 构建的客户端之一。框架选择对最终用户而言是不可见的,但它决定了 RAM 使用量、安装大小、冷启动时间和空闲 CPU。本文用数字来说明这些差异。
声明:本文发布在基于 Tauri 构建的 GitSquid 网站上。我们已尽力诚实测量 — 下面的数字可重现。
为什么框架对 Git GUI 很重要
Git GUI 会运行数小时。它们是后台工具,当你的编辑器和浏览器获得焦点时,它们仍保持打开状态。它们的资源占用会累加:使用 400 MB RAM 的 Git 客户端单独看没问题,但在同时运行编辑器、浏览器、Slack、Docker 和几个 language server 的 16 GB 机器上,每多出一 MB 后台占用都很重要。
框架的选择影响:
- 安装大小 — 应用占用多少磁盘空间。
- 冷启动 — 从启动应用到看到第一个仓库需要多长时间。
- 空闲时 RAM — 当你打开了一个仓库但未主动交互时,应用占用多少内存。
- 空闲时 CPU — 当你将焦点切换到编辑器时,应用是否会让风扇转动。
Electron 与 Tauri 的架构差异
Electron 在每个应用中捆绑一个完整的 Chromium 浏览器加上 Node.js 运行时。每个应用都是一个完整的浏览器。优势:确定性渲染 — 无论何处都是相同的 Chromium 版本。劣势:每个应用都要附带约 150 MB 的 Chromium 二进制文件。
Tauri 使用操作系统现有的 webview — macOS 上的 WKWebView、Windows 上的 WebView2、Linux 上的 WebKitGTK。用 Rust 编写的应用逻辑通过一个轻薄的 IPC 层与 webview 中的 JavaScript 通信。优势:极小的二进制文件、低 RAM、快速冷启动。劣势:由于每个 OS 使用不同的 webview 引擎,渲染可能在跨平台时略有差异。
方法论
我们在同一台机器(M2 MacBook Pro,16 GB RAM,macOS 15)上对四个 Git 客户端进行了基准测试,打开同一个中等大小的仓库(GitSquid 源仓库,约 600 个提交,约 150 个文件)。对每个应用:
- 安装大小:使用 `du -sh /Applications/<App>.app` 测量。
- 冷启动:关闭应用,启动它,开始计时,当仓库可见且可交互时停止。
- 空闲时 RAM:打开仓库,等待 30 秒,记录主进程及所有辅助进程的 `ps -o rss`。求和。
- 空闲时 CPU:在应用获得焦点但无用户交互的情况下,对 `top` 进行 60 秒采样。
不同机器和 OS 版本之间数字会有差异,但比例保持一致。请在你自己的硬件上重现以验证。
结果
| 工具 | 框架 | 安装大小 | 冷启动 | 空闲时 RAM | 空闲时 CPU |
|---|---|---|---|---|---|
| GitSquid | Tauri 2.x / Rust | 约 25 MB | 约 0.7 秒 | 约 180 MB | <1% |
| GitKraken | Electron | 约 300 MB | 约 3.5 秒 | 约 750 MB | 2-5% |
| GitHub Desktop | Electron | 约 200 MB | 约 2.0 秒 | 约 450 MB | 1-3% |
| Fork(作为参考) | 原生 (Cocoa) | 约 50 MB | 约 0.5 秒 | 约 150 MB | <1% |
两点结论:
- 基于 Tauri 的 GitSquid 在每个指标上都与原生的 Fork 处于同一档次。基于 webview 的架构在安装大小上比 Electron 轻 4-5 倍,在 RAM 上轻 2-4 倍。
- 基于 Electron 的客户端付出了实质性的开销:在安装大小上(比 Tauri 多 10 倍)、在 RAM 上(比 Tauri 多 3-4 倍)、在冷启动上(慢 3-5 倍)。这对 GitKraken 和 GitHub Desktop 都成立 — 这是框架的成本,而不是某个具体应用的问题。
这在实践中意味着什么
安装大小
在磁盘上,一个 Electron Git 客户端大约占用相当于 10 个 GitSquid 安装的空间。如果你同时安装多个 Git 客户端(我们大多数人在评估期间都会这样做),这一点就很重要。在 256 GB SSD 的笔记本上,每释放出的 GB 都有价值。
冷启动
GitSquid 与 GitKraken 之间 3 秒的差异听起来微不足道。乘以你每天启动 Git 客户端的次数(通常 5-15 次),加起来每天 1 分钟 — 一年大约 4 小时 — 都花在盯着加载屏幕上。
空闲时 RAM
GitSquid 与 GitKraken 之间 570 MB 的差距是内存受限机器上的关键数字。在装有典型的编辑器 + 浏览器 + Slack + Docker 配置的 16 GB MacBook 上,这是"我还剩 1.5 GB 空闲"和"我正在交换"之间的差别。交换会让一切变慢,不只是 Git 客户端。
空闲时 CPU
这是你能从风扇噪音中感受到的指标。Electron 应用即使空闲时也常会保持少量后台 CPU(renderer 进程、GPU 合成器等)。在无风扇笔记本或运行温度较高的 Mac 上,哪怕几个百分点也会决定是静音还是听得见风扇转动。
权衡取舍
Tauri 并非没有缺点。诚实的清单:
- Webview 一致性。每个 OS 使用不同的 webview 引擎。大多数 CSS / JS 表现一致,但一些非常高级的特性(某些 flexbox 边界情况、某些字体渲染细节)可能在不同平台上有所不同。在 GitSquid 的开发周期中,我们遇到并绕过了 2-3 个这样的问题。
- 打包复杂性。Tauri 要求每位开发者的机器上都有 Rust 工具链。Electron 只需要 Node。对于由小团队开发的 Git GUI 来说,这是可接受的;对于业余项目则增加了摩擦。
- 较小的社区。Electron 拥有 10 多年的资源、库和 Stack Overflow 答案。Tauri 的生态系统更年轻但增长迅速。
具体到 Git 客户端,这些缺点对最终用户来说都是不可见的。而好处(更小的占用、更快的启动、更少的内存)则是可见的。
为什么没有更多 Git 客户端使用 Tauri?
两个原因:
- 惯性。GitKraken 在 Tauri 出现之前就启动了。GitHub Desktop 在 Tauri 达到生产就绪状态之前就启动了。重新平台化一个成熟产品代价高昂 — 我们深有体会,GitSquid 在 v2.0 (2026-04-11) 中正是从 Electron 迁移到了 Tauri。
- Tauri 较年轻。Tauri 1.0 于 2022 年发布,Tauri 2.0 于 2024 年发布。对于成熟产品来说,押注于较年轻的框架是真实的风险。对于像 GitSquid 这样的新产品来说,权衡取舍更有利。
亲自试试
本文中的数字是可重现的。同时安装 GitSquid 和任意一个基于 Electron 的 Git 客户端,在两者中打开同一个仓库,观察机器的统计数据。差异通常无需测量便可看出。
下载 GitSquid,在你自己的硬件上看看这些数字。