應(yīng)用性能直接影響到托管服務(wù)的成本,因此公司在開(kāi)發(fā)應(yīng)用時(shí)需要格外注意應(yīng)用所使用的Web框架,初創(chuàng)公司尤其如此。此外,糟糕的應(yīng)用性能也會(huì)影響到用戶體驗(yàn),甚至?xí)虼耸艿较嚓P(guān)搜索引擎的降級(jí)處罰。在選擇框架時(shí),又有許多因素需要考量,但原始性能無(wú)疑是其中最容易測(cè)評(píng)的。不同的框架性能差異極大,即使你充分利用了硬件的性能,錯(cuò)誤的框架依然可能帶來(lái)十倍的性能損耗,雖然不是每個(gè)人都會(huì)遇到如此極端的情況,但在某些情況下確實(shí)如此,因此你有必要了解各框架之間的性能差異。
TechEmpower 測(cè)試有源代碼,硬件配置全部公開(kāi)的測(cè)試,而且很多框架是作者或資深愛(ài)好者提交的,他們各自肯定知道該如何優(yōu)化才最好,應(yīng)該比較靠譜,因?yàn)檫@些結(jié)果都是可重現(xiàn)的,誰(shuí)覺(jué)得不服可以自己跑跑看,源代碼和需求頁(yè)面提供了每種測(cè)試的執(zhí)行細(xì)節(jié)以及其它相關(guān)信息,各種Web框架性能對(duì)比頁(yè)面提供了更多有關(guān)如何進(jìn)行測(cè)試的細(xì)節(jié)與測(cè)試基準(zhǔn)的概況。TechEmpower 主要測(cè)試的目的是將目前流行的Web開(kāi)發(fā)框架從各個(gè)角度來(lái)進(jìn)行測(cè)試,這些測(cè)試的場(chǎng)景主要是針對(duì)這些Web執(zhí)行框架的基本任務(wù),比如數(shù)據(jù)庫(kù)訪問(wèn)、JSON序列化和服務(wù)端模板的組合等等場(chǎng)景。整體得分還是有借鑒作用的。當(dāng)然這種測(cè)試主要的作用還是提升士氣用的。Techempower網(wǎng)站已經(jīng)做了13輪的常用web框架的測(cè)試,它提供了2種硬件環(huán)境(硬件平臺(tái)包括Azure D3v2 Instance 和專用硬件【Dell R910 application server (4x 10-Core E7-4850 CPUs) 和 a Dell R420 database server (2x 4-Core E5-2406 CPUs)】),幾種測(cè)試case測(cè)試,內(nèi)容包括單請(qǐng)求數(shù)據(jù)庫(kù)訪問(wèn)測(cè)試、多請(qǐng)求數(shù)據(jù)庫(kù)訪問(wèn)測(cè)試、Fortunes測(cè)試、JSON序列化測(cè)試;得出了一系列的web框架的性能基準(zhǔn)。 對(duì)于架構(gòu)師而言,這是一個(gè)很好的評(píng)估選擇web框架的參考資料。
我們看看各個(gè)web框架的性能,以TPS為指標(biāo)排序(每秒返回的response多的在前面,性能越好),所有測(cè)試都在Linux中運(yùn)行。在對(duì)比中,我們看到ASP.NET Core取得優(yōu)異的成績(jī),具體6個(gè)回合的對(duì)比請(qǐng)移步TechEmpower查看:
-
響應(yīng)返回”Hello, world!”的JSON字符串
測(cè)試結(jié)果見(jiàn):http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=json -
從數(shù)據(jù)庫(kù)讀取一行記錄并返回
測(cè)試結(jié)果見(jiàn):http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=db -
從數(shù)據(jù)庫(kù)讀取多行記錄并返回
測(cè)試結(jié)果見(jiàn):http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=query -
從數(shù)據(jù)庫(kù)讀取整個(gè)表記錄并返回
測(cè)試結(jié)果見(jiàn):http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=fortune -
修改數(shù)據(jù)庫(kù)記錄并返回
測(cè)試結(jié)果見(jiàn):http://www.techempower.com/benchmarks/#section=data-r13&hw=peak&test=update -
響應(yīng)返回”Hello, world!”的純文本