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 选项卡。一些实现每秒实现非常多的请求,但是以相当大的延迟成本。

相关文章:

目录
相关文章
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
深入探索WebAssembly:提升Web应用的性能
【10月更文挑战第15天】深入探索WebAssembly:提升Web应用的性能
124 3
|
3月前
|
缓存 JSON 监控
如何在项目中保证 Web 组件化的性能
保证 Web 组件化的性能需要从多个方面入手,综合运用各种优化方法和策略。通过持续的优化和改进,能够提高组件化的整体性能,为用户提供更好的体验,同时也有助于提高项目的开发效率和质量。
58 8
|
3月前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
54 5
|
3月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
193 1
WK
|
3月前
|
开发框架 开发工具 C++
C++跨平台框架Qt
Qt是一个功能强大的C++跨平台应用程序开发框架,支持Windows、macOS、Linux、Android和iOS等操作系统。它提供了250多个C++类,涵盖GUI设计、数据库操作、网络编程等功能。Qt的核心特点是跨平台性、丰富的类库、信号与槽机制,以及良好的文档和社区支持。Qt Creator是其官方IDE,提供了一整套开发工具,方便创建、编译、调试和运行应用程序。Qt适用于桌面、嵌入式和移动应用开发。
WK
93 5
|
3月前
|
机器学习/深度学习 编解码 JavaScript
探索WebAssembly:加速Web应用性能的神奇引擎
探索WebAssembly:加速Web应用性能的神奇引擎
|
4月前
|
机器学习/深度学习 缓存 监控
利用机器学习优化Web性能和用户体验
【10月更文挑战第16天】本文探讨了如何利用机器学习技术优化Web性能和用户体验。通过分析用户行为和性能数据,机器学习可以实现动态资源优化、预测性缓存、性能瓶颈检测和自适应用户体验。文章还介绍了实施步骤和实战技巧,帮助开发者更有效地提升Web应用的速度和用户满意度。
|
3月前
|
机器学习/深度学习 JavaScript 前端开发
WebAssembly:提升Web应用性能的新技术
WebAssembly:提升Web应用性能的新技术
83 0
WK
|
3月前
|
C++ 开发者 iOS开发
C++跨平台框架
C++跨平台框架使开发者能够编写一次代码,在多个操作系统和硬件平台上运行,提高开发效率和软件可扩展性。常见的框架包括Qt、wxWidgets、SDL、JUCE等,它们各自具有丰富的功能和特点,适用于不同的应用场景。选择框架时需考虑目标平台、功能需求、学习曲线和社区支持等因素。
WK
98 0
|
5月前
|
缓存 负载均衡 前端开发
优化Web应用性能的十种策略
在当今的数字化时代,Web应用的性能直接影响用户体验和业务成效。本文深入探讨了优化Web应用性能的十种策略,从前端的资源优化到后端的架构改进,涵盖了缓存机制、异步加载、数据库优化等关键技术手段。这些策略不仅能提升响应速度,还能显著减少服务器负担和带宽消耗,为开发者提供了一系列切实可行的解决方案。