Python、CSharp、Go、Nextjs不同框架性能差异多大?

摘要:前言 不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。 上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研 在探索的过程中,我还对不同语言的框架进行了
前言 不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。 上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研 在探索的过程中,我还对不同语言的框架进行了测试对比。 Django测试补充 对于上次的 Django 性能测试,还有一些补充的结论: drf 和 ninja 性能差别不大 在 2C2G 服务器上,workers=4 比 workers=2 的性能好,具体好多少,我只测试了 uwsgi 服务器,大概是 33% 的差距 本次测试 本次测试的语言和框架: aspnetcore 8.0 (starblog 项目) aspnetcore webapi(controller) 9.0 (ayaka-chats 项目) go + gin (ebook-forge 项目) Next.js (iothub dashboard 项目) 为了确保变量控制,我把这些项目都部署了一份在腾讯云 2C2G 的小水管服务器上,统一进行测试。 测试命令统一使用: wrk -t4 -c200 -d30s <url> 测试目标都是各项目中的轻量 API(返回短字符串或简单 JSON),侧重框架本身吞吐与延迟表现,而不是业务代码复杂度。 测试结论 结果挺有意思,也和我长期使用这些框架的感受基本吻合。 总览 对了,之前测的 Django 最好成绩是 1200RPS 左右。回顾:不同Django服务器和部署方式的性能调研 项目 / 技术栈 Requests/sec 内存占用 CPU占用 说明 AspNetCore 8 (老架构 MVC) 5,960 560MB 100% 架构臃肿,内存偏高;吞吐反而一般 AspNetCore 9 (WebAPI) 15,031 80MB 95% 新生代架构非常轻,性能极强 Go + Gin 6,145 35MB 70% 内存省、吞吐中规中矩 Next.js (Edge API / App Router) 405 135MB 50% Node.js 在高并发 API 上天生不占优势 结论 1. 综合性能冠军:AspNetCore 9 吞吐最高、内存中等、生态强,适合未来的大项目(比如编辑器 Clipify、AI 服务、Chat API)。 2. 轻量冠军:Go + Gin 内存最省,部署和扩容成本最低,适合独立组件或内部服务。 3. 传统 Web 项目的现实:AspNetCore MVC 太重 老项目迁移成本高,但新项目真的不推荐继续 MVC 了。 4. Node.js/Next.js 不适合做高并发 API 适合前端页面和简单后端逻辑,但不适合作为性能核心。 逐项分析 AspNetCore 8.0 MVC(StarBlog) “老项目拖后腿,性能扣分主要在架构而不是 .NET 本身。” 内存直接飙到 560MB,说明: 各种 IOC + MVC + 中间件拉满 项目结构本身臃肿 吞吐不到 6k RPS AspNetCore 9.0 WebAPI(Ayaka Chats) “这是微软真正的力量展示。” 内存仅 80M,非常干净利落。 15k RPS 是这里的冠军。 CPU能吃满,说明框架没有瓶颈,能把机器压榨完。 ✔ 适合高性能微服务、AI 中转服务 ✔ 适合做 AI SaaS、个人工具 API 的场景 ⚠ 写的人要懂 C# Go + Gin(Ebook Forge) “极致轻量,但吞吐这次反而没那么亮眼。” 内存只有 35M,轻得离谱。 吞吐 6k RPS,比我预期的稍低,但也稳定。 CPU占用只有 70%,表明 Go 调度器稳,但 Gin 本身未完全吃满 CPU。 ✔ 特别适合后台队列、消息处理、轻量服务 ✔ 适合部署成本敏感场景(小内存机器) ✘ 对偏全栈 + AI 的开发者来说,生态相对弱一些 Next.js(iothub dashboard) “Node 跑 API:能跑,但别期待高并发。
阅读全文