自从 2021 年 2 月第 20 轮
公布的测试以后,一年半后的 2022 年 7 月 19 日
发布了 TechEmpower 21
轮测试报告:Round 21 results - TechEmpower Framework Benchmarks。Techempower benchmark
是包含范围最广泛的 web 框架性能测试
,覆盖了比较典型的使用场景,其可参考性极强。另外,所有测试源代码和软硬件配置都开放,基本得到大家的认可。
TechEmpower 基准测试
TechEmpower
基准测试有许多场景(也称为测试类型),此次评测多了一个综合评分选项,把拥有完整测试覆盖的框架现在将具有综合分数,这反映了测试项目类型的总体性能得分:JSON serialization, Single-query, Multi-query, Updates, Fortunes
和 Plaintext
。对于每一轮,我们使每个测试类型的结果规范化,然后为每个测试类型应用主观权重(例如,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
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
- 第1名
C++
的drogon
7801分 - 第2名
Rust
的actix
7667分 - 第6名
C#
的ASP.NET Core
7077分 - 第63名
Go
的gin
1943分 - 第67名
Java
的Spring
1846分 - 第113名
Elixir
的phoenix
687 分 - 第116名
Node.js
的Express
615分 - 第130名
PHP
的laravel
371分 - 第131名
Ruby
的rails
366分 - 第137名
Python
的django
274分
性能 & 托管服务成本衡量
应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的 web
框架,初创公司尤其如此。
此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚。在选择框架时,又有许多因素需要考量,但原始性能无疑是其中最容易测评的。不同的框架性能差异极大,即使你充分利用了硬件的性能,错误的框架依然可能带来十倍的性能损耗,虽然不是每个人都会遇到如此极端的情况,但在某些情况下确实如此,因此你有必要了解各框架之间的性能差异。
在当今无服务器和容器的时代,很高兴看到行业竞争并在冷启动和内存消耗方面进行艰难的测试,PlaintText
单项排名很好的体现了这一项:
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
, micro
和 full
实现。
full
的实现是使用MVC
中间件。Micro
实现在管道级实现,platform
实现直接建立在Kestrel之上。
虽然 Platform
类提供了引擎功能强大的概念,但它不是用于应用程序开发人员编程的 API
。 基准测试结果包括 Latency
选项卡。一些实现每秒实现非常多的请求,但是以相当大的延迟成本。
相关文章:
- TechEmpower 13 轮测试中的 ASP.NET Core 性能测试 =》https://www.cnblogs.com/shanyou/p/6082499.html
- TechEmpower Web 框架性能第 19 轮测试结果正式发布,ASP.NET Core 在主流框架中拔得头筹 =》https://www.cnblogs.com/shanyou/p/12995227.html