Web框架 性能評測 -- C# 的性能 和 Rust、C++并駕齊驅

自從2021年2月第20輪公布的測試以后,一年半后 的2022年7月19日 發布了 TechEmpower 21輪測試報告:Round 21 results - TechEmpower Framework Benchmarks。Techempower benchmark是包含范圍最廣泛的web框架性能測試,覆蓋了比較典型的使用場景,其可參考性極強。另外,所有測試源代碼和軟硬件配置都開放,基本得到大家的認可。

TechEmpower基準測試有許多場景(也稱為測試類型),此次評測多了一個綜合評分選項,把擁有完整測試覆蓋的框架現在將具有綜合分數,這反映了測試項目類型的總體性能得分:JSON serialization, Single-query, Multi-query, Updates, Fortunes 和 Plaintext. 。對于每一輪,我們使每個測試類型的結果規范化,然后為每個測試類型應用主觀權重(例如,Fortunes的權重比 Plaintext 高,因為Fortunes 是一種更現實的測試類型)。asp.net core排第7名,主流排名第3名,asp.net 已經在排行榜里面找不到了。

384f73aa040961c3dfcc1596f9609590.png

asp.net core從去年的綜合得分第八名上升一位到了第7名,排名雖然只提升1位,但是相對第一名的性能,從去年的 68%提升到了 83.7%,這個提升不可謂不巨大,要知道排前面都是rust, c++選手,已經比較接近了,都在7000級別,另外,論使用量, asp.net core在前10名的框架中毫無疑問是最多的。性能已經是asp.net core的優勢了,相對java主流框架, go全部框架來看,都是如此,更別說世界上最好的語言PHP了。

表上前綴T標簽表示精選的主流編程語言:https://www.techempower.com/benchmarks/#section=data-r21&test=composite

  • 第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名 Nodejs的Express 615分

  • 第130名 PHP的laravel 371分

  • 第131名 Ruby的 rails 366分

  • 第137名 Python的django 274分

應用性能直接影響到托管服務的成本,因此公司在開發應用時需要格外注意應用所使用的Web框架,初創公司尤其如此。此外,糟糕的應用性能也會影響到用戶體驗,甚至會因此受到相關搜索引擎的降級處罰。在選擇框架時,又有許多因素需要考量,但原始性能無疑是其中最容易測評的。不同的框架性能差異極大,即使你充分利用了硬件的性能,錯誤的框架依然可能帶來十倍的性能損耗,雖然不是每個人都會遇到如此極端的情況,但在某些情況下確實如此,因此你有必要了解各框架之間的性能差異。

在當今無服務器和容器的時代,很高興看到行業競爭并在冷啟動和內存消耗方面進行艱難的測試,PlaintText單項排名很好的體現了這一項:

6e7a59d0dce033d0cc880185e8642695.png

Fortunes測試類型是最有趣的,因為它包括使用對象關系映射器(ORM)和數據庫。這是Web應用程序/服務中的常見用例。以前版本的ASP.NET Core在這種情況下表現不佳。由于堆棧和PostgreSQL驅動程序中的優化,ASP.NET Core 2.1得到了顯著改進, 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性能測試

  • TechEmpower最新一輪的性能測試出爐,ASP.NET Core依舊表現不俗

  • TechEmpower Web 框架性能第19輪測試結果正式發布,ASP.NET Core在主流框架中拔得頭籌

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284153.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284153.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CF449 C. Jzzhu and Apples

1 /*2 http://codeforces.com/problemset/problem/449/C3 cf 449 C. Jzzhu and Apples4 數論素數貪心5 */6 #include <cstdio>7 #include <algorithm>8 using namespace std;9 const int Nmax100005; 10 int is_prime[Nmax]; 11 int book[Nmax]; 12 int cnt[Nmax];…

【GlobalMapper精品教程】027:路徑剖面和和視線工具的使用

文章目錄 一、路徑剖面簡介二、創建剖面圖1. 加載DEM2. 創建剖面圖3. 計算填挖方3. 保存剖面圖一、路徑剖面簡介 路徑剖面視線工具允許您使用加載的高程數據集沿用戶指定的路徑獲取垂直剖面。 要定義生成3D路徑剖面所遵循的路徑,只需單擊鼠標左鍵選擇路徑的點,然后石鍵單擊…

QT中VideoProbe的簡介和實現

一、遇到問題在Android機上使用QT進行圖像處理程序設計的時候&#xff0c;遇到的一個比較明顯的問題就是圖片采集的問題----攝像頭獲得是實時的視頻&#xff0c;如果我們想從中動態地截獲圖片&#xff0c;并且轉換成Mat的格式&#xff0c;那么僅僅是靜態的imagecapturee就無法完…

bzoj2751[HAOI2012]容易題(easy)

bzoj2751[HAOI2012]容易題(easy) 題意&#xff1a; 已知一個數列A對于所有的A[i]都是1~n的自然數&#xff0c;一些A[i]不能取一些值&#xff0c;求出所有可能的數列的積的和 mod 1000000007的值。 題解&#xff1a; 題目中的n≤109實際上是109……首先推個方程s[l,r]s[l,k]*s[k…

WinForm(二):WinFrom中Main函數的入參和出參

基本上有獨立進程的應用&#xff0c;都是以Main函數作為入口&#xff0c;開始運行的。在C#中&#xff0c;Main函數可以無參無返回值&#xff0c;當然也可以是有string[]參數和int返返回值的。WinFrom也滿足這個規則。那么Main作為一個進程的開始函數&#xff0c;那么是誰傳這些…

linux內存回收機制

無論計算機上有多少內存都是不夠的&#xff0c;因而linux kernel需要回收一些很少使用的內存頁面來保證系統持續有內存使用。頁面回收的方式有頁回寫、頁交換和頁丟棄三種方式&#xff1a;如果一個很少使用的頁的后備存儲器是一個塊設備&#xff08;例如文件映射&#xff09;&a…

編譯源碼 JAVA out of memory

轉載于:https://www.cnblogs.com/dyufei/p/6612032.html

安卓 Input Events(輸入事件)

在安卓中&#xff0c;有不止一種方法從你的應用截取用戶交互事件。在你的用戶界面中考慮事件&#xff0c;途徑就是從用戶界面中的一個指定的view對象中捕獲事件。該view提供了這樣做的方法。 在你用來組成你布局的不同的view類中&#xff0c;你或許注意到了一些公共的回調方法似…

【GlobalMapper精品教程】029:柵格重分類案例詳解

重分類就是對原有柵格像元值重新分類從而得到一組新值并輸出。重分類工具有多種方法將像元值重新分類或更改為替代值,Globalmapper提供了柵格重分類的功能。 文章目錄 一、柵格重分類簡介二、柵格重分類案例【參考閱讀】:ArcGIS實驗教程——實驗四十三:ArcGIS柵格重分類(Re…

Mybatis 和 JPA 用哪個好? 優缺點 ?

本文不會下關于 Mybatis 和 JPA 兩個持久層框架哪個更好這樣的結論。只是擺事實&#xff0c;講道理&#xff0c;所以&#xff0c;請各位看官勿噴。 一、事件起因 關于 Mybatis 和 JPA 孰優孰劣的問題&#xff0c;爭論已經很多年了。一直也沒有結論&#xff0c;畢竟每個人的喜…

SkiaSharp 之 WPF 自繪 五環彈動球(案例版)

此案例基于拖曳和彈動球兩個技術功能實現&#xff0c;如有不懂的可以參考之前的相關文章&#xff0c;屬于遞進式教程。五環彈動球好吧&#xff0c;名字是我起的&#xff0c;其實&#xff0c;你可以任意個球進行聯動彈動&#xff0c;效果還是很不錯的&#xff0c;有很多前端都是…

【GlobalMapper精品教程】032:瀏覽地理照片及航線信息(航測應用)

本文講述globalmapper軟件在無人機航測了內業處理中的應用之:瀏覽地理照片及航線信息、相機參數、元數據編輯器。 文章目錄 1. 航線信息瀏覽2. 地理圖像瀏覽2.1 數字化工具2.2 要素信息工具2.3 屬性表3. 照片原數據編輯1. 航線信息瀏覽 打開globalmapper軟件,加載無人機航測…

Spring Boot 2.7.0發布,2.5停止維護

這幾天是Spring版本日&#xff0c;很多Spring工件都發布了新版本&#xff0c; Spring Framework 6.0.0 發布了第 4 個里程碑版本&#xff0c;此版本包含所有針對 5.3.20 的修復補丁&#xff0c;以及特定于 6.0 分支的 39 項修復和改進。而今天Spring Boot 2.7.0和Spring Securi…

【GlobalMapper精品教程】031:Globalmapper在航測內業數據處理中的應用舉例

Globalmapper在航測內業數據處理中的應用舉例索引。 文章目錄 1. 圖像及航線瀏覽2. 3D重建3. 點云分類4. 創建地形5. 地形分析1. 圖像及航線瀏覽 擴展閱讀:【GlobalMapper精品教程】032:瀏覽地理照片及航線信息(航測應用) 2. 3D重建 從Global Mapper的19版本開始,Pixels-…

移動工具V和選區工具M

移動工具快捷鍵&#xff1a;V 屬性&#xff1a; 自動選擇 在默認情況下&#xff0c;移動工具的“自動選擇”一項是沒有勾選的。表示只能選中圖層窗口中選定的固定圖層&#xff0c;不能隨意的點擊選擇別的圖層。在這里&#xff0c;我們也勾選“自動選擇”&#xff0c;可任意選擇…

SeleniumWebDriver擴展插件開發

Selenium WebDriver 是一組開源 API&#xff0c;用于自動測試 Web 應用程序&#xff0c;利用它可以通過代碼來控制chrome edge等瀏覽器&#xff01;有時候我們需要mock接口的返回&#xff0c;或者攔截和轉發請求&#xff0c;今天就來實現這個功能本插件代碼已開源&#xff1a;h…

ZooKeeper的工作原理

ZooKeeper是一個分布式的應用程序協調服務。 2 ZooKeeper的工作原理 Zookeeper 的核心是原子廣播&#xff0c;這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab(Zookeeper Atomic Broadcast)協議。Zab協議有兩種模式&#xff0c;它們分別是恢復模式&#xff08;…

memcache的學習路線圖

memcache學習材料//memcache自帶的github 上的 wiki//席劍飛 Memcache&#xff08;MC&#xff09;系列 1~8系列評注&#xff1a; memcache系統寫的最深的一博客&#xff0c;建議一讀。http://blog.csdn.net/xifeijian/article/details/21994941//mysql與memcache的使用https://…

[轉]錢嶺:別擔心“35歲危機”,要成為“老專家”

從清華大學到貝爾實驗室&#xff0c;再到中國移動&#xff0c;作為“IT老人”&#xff0c;錢嶺的技術人生幾乎覆蓋了20世紀90年代至今的信息產業革命。2007年開始&#xff0c;錢嶺在中國移動經歷了基礎科研到產品落地&#xff0c;再到團隊孵化&#xff1b;也經歷了云計算從無到…