Rust 日志框架基准测试
作者测试了 Rust 生态中常用的几种日志框架,主要是关注它们的性能差异。参与测试的框架有:
- log 配合 env_logger: Rust 中标准的日志 Facade
- tracing: 一个用于检测 Rust 程序以收集基于事件的结构化诊断信息的框架
- slog: 为 Rust 提供的结构化、具上下文信息的、可扩展且可组合的日志记录功能
- log4rs: 对标 Java
log4j
和logback
的高度可配置的日志框架 - fern: 简单但是高效的日志实现
- ftlog: 高性能的、零内存分配的日志框架
关键的测试结果摘要如下:
单条日志耗时(纳秒)对比
Logger | 10 byte message | 100 byte message | 1000 byte message |
---|---|---|---|
env_logger | 3640.22 | 13519.32 | 92334.04 |
fern | 3888.57 | 11777.73 | 90513.74 |
ftlog | 178.31 | 175.93 | 196.52 |
log4rs | 3614.77 | 11868.81 | 91443.89 |
slog | 73.04 | 73.53 | 91.77 |
tracing | 8797.12 | 18502.08 | 98468.43 |
日志吞吐量对比(条/秒)
Logger | 10 byte message | 100 byte message | 1000 byte message |
---|---|---|---|
env_logger | 274708.51 | 73968.21 | 10830.24 |
fern | 257163.79 | 84906.04 | 11048.05 |
ftlog | 5608233.36 | 5684080.37 | 5088411.98 |
log4rs | 276642.65 | 84254.46 | 10935.67 |
slog | 13691341.61 | 13599441.75 | 10897043.22 |
tracing | 113673.55 | 54047.97 | 10155.54 |
结论
- 最快的日志记录器:根据基准测试结果,对于大多数常见用例而言,速度最快的日志记录器似乎是 slog。
- 性能最稳定:ftlog 在不同消息大小和日志级别下表现出最为稳定的性能。
- 最适合高吞吐量场景:slog 在高吞吐量的日志记录场景中展现出最佳性能。
最终,日志记录器的选择取决于你具体的需求。如果性能至关重要,这些基准测试结果或许能帮助你做出决策。然而,对于许多项目来说,这些差异可能微不足道,其他因素,比如易用性或功能集,可能更为重要。
Github 仓库:https://github.com/jackson211/rust_logger_benchmark
Tiny SSE: Server-Send Events 服务器
Tiny SSE 是一个轻量的支持 SSE 的服务器,采用 Rust 和 Lua 开发。它具有以下特性:
- 灵活的消息处理 —— 可动态地对消息进行筛选、修改、重定向和重播。
- 可靠的连接 —— 跟踪订阅者,支持重新连接,并维护会话状态。
- 安全的访问控制 —— 实施身份验证、授权以及基于事件的限制措施。
- 可定制的行为 —— 使用钩子函数以编程方式修改消息并管理订阅。
Github 仓库:https://github.com/benwilber/tinysse
官网:https://tinysse.com
apalis:一个用简单、可扩展的多线程后台作业和消息处理库
apalis
是一个用 Rust 编写的简单、可扩展的多线程后台作业和消息处理库。它具有以下特性:
- 简单可预测的任务处理模型:任务处理程序只是一个异步函数,且无宏的 API 设计。
- 依赖注入:任务处理程序采用熟悉的依赖注入方式,类似于
actix
和axum
。 - 集成
tower
生态:可以充分利用tower
生态系统中的中间件、服务和实用工具。 - 易于扩展:后端默认支持分布式,便于扩展。
- 运行时无关:可以使用
tokio
、smol
等不同的运行时。 - 内置并发和并行:支持并发和并行处理任务。
- 工人监控和优雅关闭:提供工人监控功能,并且支持优雅关闭。
- API 暴露:能够轻松地通过 API 暴露任务和工人。
- 持久化 Cron 作业:支持持久化 Cron 作业,并可将 Cron 作业分发到其他后端。
- 可选的 Web 界面:提供可选的 Web 界面来管理作业。
Github 仓库:https://github.com/geofmureithi/apalis
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论