TechEmpower 21 轮 Web 框架性能评测 -- C# 的性能和 Rust、C++ 并驾齐驱

简介: 版权声明:本文为 CSDN 博主「shanyou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/shanyou/article/details/126081288

自从 2021 年 2 月第 20 轮公布的测试以后,一年半后的 2022 年 7 月 19 日 发布了 TechEmpower 21 轮测试报告:Round 21 results - TechEmpower Framework BenchmarksTechempower benchmark 是包含范围最广泛的 web 框架性能测试,覆盖了比较典型的使用场景,其可参考性极强。另外,所有测试源代码和软硬件配置都开放,基本得到大家的认可。

基准测试代码地址:https://github.com/TechEmpower/FrameworkBenchmarks

TechEmpower 基准测试

TechEmpower 基准测试有许多场景(也称为测试类型),此次评测多了一个综合评分选项,把拥有完整测试覆盖的框架现在将具有综合分数,这反映了测试项目类型的总体性能得分:JSON serialization, Single-query, Multi-query, Updates, FortunesPlaintext。对于每一轮,我们使每个测试类型的结果规范化,然后为每个测试类型应用主观权重(例如,Fortunes 的权重比 Plaintext 高,因为 Fortunes 是一种更现实的测试类型)。

=》asp.net core 排第 7 名,主流排名第 3 名,asp.net 已经在排行榜里面找不到了。

TechEmpower 21 轮测试报告

2022 年 7 月 19 日发布了 TechEmpower 21 轮测试报告:https://www.techempower.com/benchmarks/#section=data-r21&test=composite

TechEmpower21

asp.net core 从去年的综合得分第 8 名上升 1 位到了第 7 名,排名虽然只提升 1 位,但是相对第 1 名的性能,从去年的 68% 提升到了 83.7%,这个提升不可谓不巨大,要知道排前面都是 rust, c++ 选手,已经比较接近了,都在 7000+ 级别,另外,论使用量,asp.net core 在前 10 名的框架中毫无疑问是最多的。

性能已经是 asp.net core 的优势了,相对 java 主流框架,go 全部框架来看,都是如此,更别说世界上最好的语言 PHP 了。

主流编程语言框架性能对比

表上前缀 T 标签表示精选的主流编程语言:TechEmpower Framework Benchmarks

主流语言web框架性能对比

  • 第1名 C++drogon 7801分
  • 第2名 Rustactix 7667分
  • 第6名 C#ASP.NET Core 7077分
  • 第63名 Gogin 1943分
  • 第67名 JavaSpring 1846分
  • 第113名 Elixirphoenix 687 分
  • 第116名 Node.jsExpress 615分
  • 第130名 PHPlaravel 371分
  • 第131名 Rubyrails 366分
  • 第137名 Pythondjango 274分

性能 & 托管服务成本衡量

应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的 web 框架,初创公司尤其如此。

此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚。在选择框架时,又有许多因素需要考量,但原始性能无疑是其中最容易测评的。不同的框架性能差异极大,即使你充分利用了硬件的性能,错误的框架依然可能带来十倍的性能损耗,虽然不是每个人都会遇到如此极端的情况,但在某些情况下确实如此,因此你有必要了解各框架之间的性能差异。

在当今无服务器和容器的时代,很高兴看到行业竞争并在冷启动和内存消耗方面进行艰难的测试,PlaintText 单项排名很好的体现了这一项:

image.png

Fortunes 测试类型是最有趣的,因为它包括使用对象关系映射器(ORM)和数据库。这是 Web应用程序/服务 中的常见用例。以前版本的 ASP.NET Core 在这种情况下表现不佳。由于堆栈和 PostgreSQL 驱动程序中的优化,ASP.NET Core 2.1 得到了显著改进, ASP.NET Core 3.1 版本又提升到了 27 万,5.0 版本提升到了 40 万,6.0 版本提升到了 45 万。

其他方案不太代表典型的应用程序。他们强调堆栈的特定方面。如果它们与您的用例紧密匹配,它们可能会很有趣。对于框架开发人员,他们帮助识别进一步优化堆栈的机会。

例如,考虑 Plaintext 方案。此方案涉及客户端发送 16 个请求背靠背(流水线),服务器知道响应,而无需执行 I/O 操作或计算。这不代表典型的请求,但它是解析 HTTP 请求的良好压力测试。 每个实现都有一个类。

例如,ASP.NET Core Plaintext 具有 platform, microfull 实现。

  • full 的实现是使用 MVC 中间件。
  • Micro 实现在管道级实现,
  • platform 实现直接建立在Kestrel之上。

虽然 Platform 类提供了引擎功能强大的概念,但它不是用于应用程序开发人员编程的 API。 基准测试结果包括 Latency 选项卡。一些实现每秒实现非常多的请求,但是以相当大的延迟成本。

相关文章:

目录
相关文章
|
2月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
185 4
|
2月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
350 1
|
6月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
6月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
5月前
|
编解码 缓存 监控
如何提高类Web开发范式的性能?
如何提高类Web开发范式的性能?
|
6月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
8月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
919 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
8月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
471 14
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
553 67
|
缓存 JSON 监控
如何在项目中保证 Web 组件化的性能
保证 Web 组件化的性能需要从多个方面入手,综合运用各种优化方法和策略。通过持续的优化和改进,能够提高组件化的整体性能,为用户提供更好的体验,同时也有助于提高项目的开发效率和质量。
269 64