进阶 www.iris-go.com 2026-10-20 02:39:14 · 20 阅读

第70章 视图性能基准测试:7 种模板引擎渲染速度对比

视图性能基准测试

本节我们通过几个简单易懂的小型基准测试,来比较各种模板引擎的渲染速度。需要提醒的是,速度并非唯一考量,选择模板引擎时要结合实际需求,因为它们的功能各不相同,有时你可能不得不为了功能而放弃性能更优的方案。

我们将对比以下 7 种模板引擎:

- Ace - Blocks - Django - Handlebars - HTML(标准 html/template) - Jet - Pug

每项基准测试都包含:模板 + 布局(layout)+ 局部视图(partial)+ 模板数据(map),各测试的响应总字节数完全一致。由于 Ace 和 Pug 在渲染前会压缩模板(去除换行和空格),为保证公平,其他模板文件的内容也做了同样的压缩处理。

各模板引擎的基准测试代码可在以下地址查看:https://github.com/kataras/iris/tree/main/_benchmarks/view

测试系统

- 处理器:12th Gen Intel(R) Core(TM) i7-12700H - 内存:15.68 GB - 操作系统:Microsoft Windows 11 Pro - Bombardier:v1.2.4 - Go:go1.20.2 - Node.js:v19.5.0

术语说明

- Name:测试中使用的框架(或路由器)名称。 - Reqs/sec:每秒可处理的平均请求数(越高越好)。 - Latency:从客户端发出请求到收到响应所耗费的时间(越低越好)。 - Throughput:数据传输速率(越高越好,取决于响应长度,即 body + headers)。 - Time To Complete:完成整个测试所需的总时间(秒,越短越好)。

测试结果

测试:模板 + 布局 + 局部视图 + 数据

📖 发起 1000000 个请求,并发客户端数为 125,响应内容为 HTML。服务端 handler 设置了部分模板数据,并渲染一个包含布局和 footer 局部视图的模板文件。

| Name | Language | Reqs/sec | Latency | Throughput | Time To Complete | |------|----------|----------|---------|------------|------------------| | Jet | Go | 248957 | 500.81us | 88.26MB | 4.02s | | Blocks | Go | 238854 | 521.76us | 84.74MB | 4.19s | | Pug | Go | 238153 | 523.74us | 85.07MB | 4.20s | | Django | Go | 224448 | 555.40us | 79.61MB | 4.46s | | Handlebars | Go | 197267 | 631.99us | 69.96MB | 5.07s | | Ace | Go | 157415 | 792.53us | 55.83MB | 6.35s | | HTML | Go | 12081 | 1.03ms | 42.82MB | 8.29s |

喜欢看图表的朋友请看下图:

最后更新时间:2023 年 3 月 17 日 10:31(UTC)

从上面的结果可以看出,Jet 性能最佳,HTML 则是最慢的。

评论 (0)