← 返回博客

面向Git客户端的Tauri vs Electron:性能基准测试

comparison performance

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%

两点结论:

  1. 基于 Tauri 的 GitSquid 在每个指标上都与原生的 Fork 处于同一档次。基于 webview 的架构在安装大小上比 Electron 轻 4-5 倍,在 RAM 上轻 2-4 倍。
  2. 基于 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?

两个原因:

  1. 惯性。GitKraken 在 Tauri 出现之前就启动了。GitHub Desktop 在 Tauri 达到生产就绪状态之前就启动了。重新平台化一个成熟产品代价高昂 — 我们深有体会,GitSquid 在 v2.0 (2026-04-11) 中正是从 Electron 迁移到了 Tauri。
  2. Tauri 较年轻。Tauri 1.0 于 2022 年发布,Tauri 2.0 于 2024 年发布。对于成熟产品来说,押注于较年轻的框架是真实的风险。对于像 GitSquid 这样的新产品来说,权衡取舍更有利。

亲自试试

本文中的数字是可重现的。同时安装 GitSquid 和任意一个基于 Electron 的 Git 客户端,在两者中打开同一个仓库,观察机器的统计数据。差异通常无需测量便可看出。

下载 GitSquid,在你自己的硬件上看看这些数字。