文章摘要
Cloudflare Workers与Vercel的CPU性能基准测试显示前者表现较差,但两者使用相同的V8引擎,理论上性能应相近。经调查发现差异源于多个小问题,包括配置不当和测试方法问题。
文章总结
解析Cloudflare Workers CPU性能基准测试
2025年10月4日,独立开发者Theo Browne发布了一系列基准测试,旨在比较Cloudflare Workers与基于AWS Lambda的Vercel平台在服务器端JavaScript执行速度上的差异。初步结果显示,在多种CPU密集型任务中,Cloudflare Workers的性能比Vercel上的Node.js慢多达3.5倍。
这一结果令人意外,因为两者均使用相同的底层JavaScript引擎——Google Chrome的V8引擎。经过调查,Cloudflare团队发现了一系列导致性能差异的问题,包括基础设施调优不足、平台间JavaScript库的差异以及测试本身的问题。通过一周的修复,Workers的性能得到了显著提升。
主要改进点
调度算法优化
团队发现原有的调度算法在处理CPU密集型任务时表现不佳,导致请求延迟较高。通过优化算法,Workers现在能够更高效地自动扩展,减少请求阻塞。V8垃圾回收调优
团队调整了V8的年轻代内存大小配置,使其更适应现代工作负载,从而提升了约25%的性能。OpenNext框架优化
针对Next.js的性能问题,团队修复了OpenNext中的多个性能瓶颈,包括减少不必要的内存分配和拷贝,优化流处理适配器等。跨平台问题修复
团队还发现并修复了影响其他平台的问题,例如Node.js中三角函数性能较低的问题,并向V8提交了性能优化补丁。
基准测试的局限性
尽管基准测试帮助发现了实际问题,但其本身也存在一些局限性: - 网络延迟影响:测试结果可能受到客户端与服务器之间网络延迟的影响。 - 硬件差异:不同代的CPU性能差异可能导致测试结果波动。 - 配置错误:测试中发现的Next.js和React配置错误也对结果产生了影响。
未来计划
Cloudflare计划继续优化OpenNext和调度算法,并进一步参与V8和Node.js的改进。团队鼓励开发者提供更多性能测试案例,以便持续改进。
通过这次优化,Cloudflare Workers在大多数测试场景中已与Vercel性能相当,仅在Next.js测试中仍有小幅差距,但团队预计将通过后续改进完全消除这一差距。
(注:本文保留了技术细节和关键改进点,删减了部分重复内容和宣传性语句。)
评论总结
总结评论内容如下:
对Cloudflare积极改进的肯定
- 认为Cloudflare面对批评表现成熟,采取了建设性改进措施
"Good writeup and very mature response to lots of criticism"
"Well played Cloudflare"
- 认为Cloudflare面对批评表现成熟,采取了建设性改进措施
对技术改进的具体讨论
- 关注JSON函数性能优化等技术细节
"improvingJSON.stringifyperformance when you don't pass areplacerfunction" - 赞赏OpenNext等可复用改进方案
"awesome to see improvements on the OpenNext implementation"
- 关注JSON函数性能优化等技术细节
对Vercel和Cloudflare竞争的看法
- 认为竞争促使产品改进
"This shames poor performing product into action" - 批评Cloudflare过去不够专注导致Vercel崛起
"vercel only exists because cf got lazy"
"CFs docs...usually is subpar to vercel's"
- 认为竞争促使产品改进
对框架性能的对比
- 指出Next.js性能问题
"nextjs being 4 times slower latency wise" - 赞赏SvelteKit的性能表现
"SvelteKit is crazy fast and Next.js is a snail"
- 指出Next.js性能问题
对事件性质的评论
- 将事件视为值得关注的行业竞争
"Grab the popcorn, the Vercel v Cloudflare drama unfolds"
- 将事件视为值得关注的行业竞争