社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python、CSharp、Go、Nextjs,不同框架的性能到底差多少?

dotNET跨平台 • 6 月前 • 157 次点击  

 

字数 1400,阅读大约需 7 分钟

前言

不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。

上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研[1]

在探索的过程中,我还对不同语言的框架进行了测试对比。

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 

测试目标都是各项目中的轻量 API(返回短字符串或简单 JSON),侧重框架本身吞吐与延迟表现,而不是业务代码复杂度。

测试结论

结果挺有意思,也和我长期使用这些框架的感受基本吻合。

总览

对了,之前测的 Django 最好成绩是 1200RPS 左右。回顾:不同Django服务器和部署方式的性能调研[1]

项目 / 技术栈
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:能跑,但别期待高并发。”

  • • 400 RPS → 不算 API 性能框架(期望是 Express/fastify 的千级)
  • • 延迟 200ms+ → 再次印证了 Node.js 单线程 + V8 的特性
  • • 适合 SSR/前端 BFF,不适合做主要 API

✔ 如果是页面渲染、前端服务,中规中矩

✘ 如果是 API 主战场,还是别为难它

测试数据

aspnetcore 8.0 (starblog 项目)

测试时内存峰值占用560M左右,CPU占用100%;
这个项目因为是 AspNetCore MVC 加上架构比较老,太臃肿,导致内存占用很多,而且性能也比较差。

$ wrk -t4 -c200 -d30s http://127.0.0.1:9874/Api/DataWrapperTest/StringResult
Running 30s test @ http://127.0.0.1:9874/Api/DataWrapperTest/StringResult
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    44.04ms   44.20ms 304.43ms   88.08%
    Req/Sec     1.59k   559.31     2.42k    75.64%
  179013 requests in 30.03s, 44.22MB read
Requests/sec:   5960.51
Transfer/sec:      1.47MB

aspnetcore webapi(controller) 9.0 (ayaka-chats 项目)

测试时内存峰值占用80M左右,CPU占用95%

$ wrk -t4 -c200 -d30s http://127.0.0.1:16080/api/auth/csrf
Running 30s test @ http://127.0.0.1:16080/api/auth/csrf
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    13.94ms    8.17ms 111.67ms   83.87%
    Req/Sec     3.78k     1.06k    5.68k    72.92%
  451205 requests in 30.02s, 99.40MB read
Requests/sec:  15031.56
Transfer/sec:      3.31MB

go + gin (ebook-forge 项目)

测试时内存峰值占用35M左右,CPU占用70%

$ wrk -t4 -c200 -d30s http://127.0.0.1:8080/health
Running 30s test @ http://127.0.0.1:8080/health
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    37.13ms   33.65ms 499.93ms   82.09%
    Req/Sec     1.55k   328.35     2.86k    74.04%
  184447 requests in 30.02s, 114.86MB read
Requests/sec:   6145.14
Transfer/sec:      3.83MB

Next.js (iothub dashboard 项目)

测试时内存峰值占用135M左右,CPU占用50%




    
$ wrk -t4 -c200 -d30s http://127.0.0.1:3000/api/health
Running 30s test @ http://127.0.0.1:3000/api/health
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   251.98ms  110.23ms   1.95s    68.01%
    Req/Sec   112.01     89.28   515.00     61.88%
  12192 requests in 30.03s, 4.45MB read
  Socket errors: connect 0, read 0, write 0, timeout 118
Requests/sec:    405.96
Transfer/sec:    151.80KB

小结

对于个人开发者和轻量 SaaS 而言:

想要“爽”和“稳”,首选 AspNetCore 9;

想要“省”和“快上手”,Go + Gin 很好;

Django / Python 生态强但性能不是主要卖点,需要依赖 ASGI 服务器选择;

Node.js 适合做 BFF,不适合承担高吞吐 API。

引用链接

[1] 不同Django服务器和部署方式的性能调研: https://blog.deali.cn/p/django-performance-research 

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/190040