evlog 性能到底有多快?Benchmark 数据与真实请求成本完全解析
【免费下载链接】evlogDigging through logs is not observability. Its hope — wide events, structured errors, TypeScript-first, every runtime.项目地址https://gitcode.com/gh_mirrors/ev/evlog点击查看免费下载evlog 是一款 TypeScript 优先的结构化日志库主打宽事件wide events和自解释的结构化错误。它到底比 pino、winston 快多少一次请求的日志开销是几微秒每月账单能省多少钱本文基于仓库自带的 benchmark 套件把这些数字一次讲清楚——面向刚接触 evlog 的开发者不需要任何性能测试背景。 先看结论核心数字一张表不想看过程的话这张表就是答案数据来自 packages/evlog/bench/RESULTS.md场景evlogpinowinstonconsola简单字符串日志1.83M ops/s548ns1.09M1.20M2.79M最快结构化日志5 字段1.64M ops/s610ns716K431.6K1.71M深层嵌套日志1.55M ops/s最快464.9K164.0K1.01M子级/作用域 logger1.70M ops/s最快845K430.0K280.4K宽事件完整生命周期1.58M ops/s最快205.8K111.9K—⚡ 一句话总结简单打一行字consola 略快但只要是带上下文的真实日志场景evlog 全面领先宽事件场景下比 pino 快约 7.7 倍、比 winston 快约 14 倍。 测试是怎么做的对比套件的源码在 packages/evlog/bench/comparison/vs-alternatives.bench.ts用的是 Vitest 的benchAPI所有库都配置为 JSON 输出到无操作目标不写真实文件。官方在 apps/docs/content/7.reference/2.performance.md 中特意说明了各库的工作量口径并不完全对等例如 pino 包含一次/dev/null写入所以对比数字适合理解量级而不是当作绝对排名。想自己复现只需cd packages/evlog pnpm exec vitest bench --run⚡ 真实请求的成本1 微秒是什么概念微秒级数字比较抽象我们看 evlog 最核心的一次完整请求场景——从创建中间件 logger、累积上下文到最终发射full request lifecycle源码见 packages/evlog/bench/core/middleware.bench.ts请求场景吞吐量平均耗时p99 耗时无插件、无 drain993.7K 次/秒1.01µs1.79µs2 个插件、同步 drain621.2K 次/秒1.61µs2.46µs也就是说哪怕一个请求里调用了log.set()积累上下文平均也只多花 1 微秒。拆开看各阶段数据来自 RESULTS.md阶段规模平均耗时log.set()合并字段3 个字段105nslog.set()合并字段50 个字段1.76µslog.set()合并字段200 个嵌套字段7.62µsemit()最小事件—519nsemit()携带错误—15.17µs 可见真正的成本大头是带错误的事件而正常请求几乎免费——这正是 evlog 的设计目标把开销花在值得记录的信号上。 包体积gzip 后仅 11.8 kB用同一套 esbuild 打包标准基础配置gzip 后各库体积对比RESULTS.md库版本原始Gzipevlog2.29.031.17 kB11.80 kBpino10.3.159.94 kB20.05 kBconsola3.4.274.73 kB22.61 kBwinston3.19.0144.14 kB47.42 kBevlog 的 gzip 体积不到 winston 的四分之一。各入口的最小体积也很友好logger入口 254 B、client浏览器端128 BRESULTS.md。 从微秒到账单一次请求到底省多少钱性能之外的第二个成本是日志账单。官方成本文档 apps/docs/content/7.reference/7.cost.md 用同一个 checkout 请求实测了两种写法写法事件数字节数pino 逐行打 4 条4736 Bevlog 宽事件 1 条1322 B差异少 75%少 56%原理很直白逐行日志会把level、时间戳、method、path、requestId这些信封字段重复写 4 遍宽事件只写一遍。换算成钱以 Datadog 牌价为例$0.10/GB 摄入 $1.70/百万索引事件计算逻辑见 apps/docs/app/utils/log-cost.ts每月 1000 万请求、每请求 4 行日志月账单约$68.74换成 evlog 宽事件约$17.32每月省下$51.42降幅约 75%✅你的具体数字取决于厂商按 GB 还是按事件计费仓库的文档站提供了交互式成本计算器把上面的字节数和费率都内置了输入自己的流量即可。 如何正确看待这些数字官方文档特意提醒了几点值得新手记住微基准 ≠ 端到端成本事件构建的耗时不包含网络投递和后端索引完整路径请用真实负载压测2.performance.md采样是更大的杠杆宽事件把每请求 4 行收敛为每请求 1 事件而 头采样 尾采样 能让日志量不再跟随流量增长——尾采样规则匹配本身只需 22nsRESULTS.mdpino 有 worker transport把传输处理放到工作线程如果你的瓶颈在传输而非构建现有方案未必需要更换。小结关注点evlog 的表现结构化日志速度1.64M ops/s约为 pino 的 2.3 倍完整请求开销平均 1.01µsp99 1.79µs包体积gzip 11.80 kB四款中最小单请求日志字节322 B vs 736 B少 56%月度账单千万请求量级可省约 75%evlog 用每请求一条宽事件换来了速度和账单上的双重节省而它的 benchmark 数据全部开源在 packages/evlog/bench/ 目录中——每个数字都可以自己跑一遍验证。赞分享【免费下载链接】evlogDigging through logs is not observability. Its hope — wide events, structured errors, TypeScript-first, every runtime.项目地址https://gitcode.com/gh_mirrors/ev/evlog点击查看免费下载相关推荐Chameleon与GraphQL集成优化多端数据请求Chameleon与GraphQL集成优化多端数据请求 引言 在当今多端开发的时代开发者面临着一个普遍的痛点如何高效地在不同平台如Web、小程序、移动端跨平台前端移动开发小程序构建工具彻底解决Vue数据请求痛点Axios集成最佳实践指南彻底解决Vue数据请求痛点Axios集成最佳实践指南 在Vue开发中数据请求是连接前端与后端的重要桥梁而Axios作为基于Promise的HTTP客户端库网络后端前端autocannon请求数据安全加密与性能平衡的最佳实践autocannon请求数据安全加密与性能平衡的最佳实践 在现代Web应用开发中数据安全与性能优化往往是一对需要精细平衡的矛盾体。作为基于Node.js的高性能测试测试开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考