国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP路由性能測(cè)試

levy9527 / 1304人閱讀

摘要:路由控制器性能測(cè)試前言前段時(shí)間抽空寫了個(gè)微型路由控制器可以在我的另一篇文章里面看到詳細(xì)的介紹。上門有測(cè)試以及這幾個(gè)路由控制器的性能,總體來(lái)說(shuō)和在最壞的情況下表現(xiàn)最好。同樣的測(cè)試條件。所以本次測(cè)試僅僅針對(duì),以及。

PHP路由控制器性能測(cè)試 前言

前段時(shí)間抽空寫了個(gè)微型路由控制器可以在我的另一篇文章里面看到詳細(xì)的介紹。雖然在設(shè)計(jì)的時(shí)候及盡量避開(kāi)了正則匹配和數(shù)組循環(huán)這種耗時(shí)的操作。盡量節(jié)省時(shí)間。但是那都是理論上的。今天就實(shí)際測(cè)試了一下。

代碼

github上面專門有一個(gè)叫做php-router-benchmark的倉(cāng)庫(kù),用來(lái)測(cè)試路由分發(fā)的性能。

上門有測(cè)試php-r3,Pux,FastRoute,Symfony2 Dumped,Symfony2 以及Aura v2這幾個(gè)路由控制器的性能,總體來(lái)說(shuō)R3和FastRoute在最壞的情況下表現(xiàn)最好。其中R3和Pux是C語(yǔ)言實(shí)現(xiàn)的插件,有語(yǔ)言上面的性能優(yōu)勢(shì)。

測(cè)試

首先f(wàn)ork了一份這個(gè)benchmark的庫(kù),并把自己的Router的測(cè)試代碼加上去了。同樣的測(cè)試條件。由于R3沒(méi)有裝上,還有Pux安裝失敗。所以本次測(cè)試僅僅針對(duì)FastRoute,Symfony2 Dumped,Symfony2,Aura v2以及Router。
這樣也好,反正這幾個(gè)都是純PHP實(shí)現(xiàn)的。另外兩個(gè)C語(yǔ)言實(shí)現(xiàn)的這次就不進(jìn)行比較了。

結(jié)果

首先是最壞情況下的測(cè)試,其中包含了兩個(gè)測(cè)試用例,一個(gè)是找不到的404 還有一個(gè)是在列表最后一個(gè)才能匹配到的,也就是最壞的兩種情況。

Worst-case matching

This benchmark matches the last route and unknown route. It generates a randomly prefixed and suffixed route in an attempt to thwart any optimization. 1,000 routes each with 9 arguments.

This benchmark consists of 10 tests. Each test is executed 1,000 times, the results pruned, and then averaged. Values that fall outside of 3 standard deviations of the mean are discarded.

Test Name Results Time + Interval Change
Router - unknown route (1000 routes) 993 0.0000232719 +0.0000000000 baseline
Router - last route (1000 routes) 981 0.0000955424 +0.0000722705 311% slower
FastRoute - unknown route (1000 routes) 990 0.0005051955 +0.0004819236 2071% slower
FastRoute - last route (1000 routes) 998 0.0005567203 +0.0005334484 2292% slower
Symfony2 Dumped - unknown route (1000 routes) 998 0.0006116139 +0.0005883420 2528% slower
Symfony2 Dumped - last route (1000 routes) 998 0.0007765370 +0.0007532651 3237% slower
Symfony2 - unknown route (1000 routes) 996 0.0028456177 +0.0028223458 12128% slower
Symfony2 - last route (1000 routes) 993 0.0030129542 +0.0029896823 12847% slower
Aura v2 - last route (1000 routes) 989 0.1707107230 +0.1706874511 733450% slower
Aura v2 - unknown route (1000 routes) 988 0.1798588730 +0.1798356011 772760% slower

查看上表的數(shù)據(jù),我自己的Router在兩種測(cè)試用例的最壞情況下都是表現(xiàn)最好的。并且把其他幾個(gè)遠(yuǎn)遠(yuǎn)的甩出幾條街。看來(lái)這個(gè)主要得益于使用樹(shù)形結(jié)構(gòu)的PHP數(shù)組來(lái)存儲(chǔ)路由表。所以進(jìn)行遍歷的時(shí)候始終能達(dá)到O(log n)的時(shí)間復(fù)雜度。

然后再來(lái)看最好的情況,也就是在第一個(gè)url就能匹配到的情況。

First route matching

This benchmark tests how quickly each router can match the first route. 1,000 routes each with 9 arguments.

This benchmark consists of 5 tests. Each test is executed 1,000 times, the results pruned, and then averaged. Values that fall outside of 3 standard deviations of the mean are discarded.

Test Name Results Time + Interval Change
FastRoute - first route 998 0.0000498390 +0.0000000000 baseline
Symfony2 Dumped - first route 995 0.0000517531 +0.0000019141 4% slower
Router - first route 994 0.0001499363 +0.0001000972 201% slower
Aura v2 - first route 998 0.0008559464 +0.0008061073 1617% slower
Symfony2 - first route 998 0.0012734995 +0.0012236604 2455% slower

查看這個(gè)表的數(shù)據(jù),每一個(gè)庫(kù)只有一個(gè)測(cè)試用例。是測(cè)試的“最好”的情況。這里之所以加上引號(hào)是因?yàn)椋琑outer使用的是樹(shù)形結(jié)構(gòu)存儲(chǔ),其他幾個(gè)庫(kù)所謂的“最好”情況,其實(shí)不適用了。不能在第一個(gè)匹配到。所以應(yīng)該說(shuō)在這個(gè)測(cè)試用例中Router還是以比較平均的時(shí)間來(lái)和其他幾個(gè)庫(kù)的最好時(shí)間進(jìn)行比較?。。。ū容^一下上下兩個(gè)表中的Time絕對(duì)值就能看出,其他幾個(gè)庫(kù)在下面的“最好”情況下都比上面的最壞情況要好很多,但是Router庫(kù)的表現(xiàn)確是相反的,并且不管那種情況時(shí)間都是比較接近的,這就和之前提到的樹(shù)形節(jié)點(diǎn)遍歷的時(shí)間復(fù)雜度相對(duì)固定有關(guān)系)

后記

這次測(cè)試了幾個(gè)純PHP實(shí)現(xiàn)的路由控制器,等下次繼續(xù)把兩個(gè)C語(yǔ)言實(shí)現(xiàn)的庫(kù)一起拿來(lái)比較一下!??!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/21167.html

相關(guān)文章

  • 記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

    摘要:為了一探究竟,于是開(kāi)啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過(guò)程踩的很多坑之后,我們最終完善并實(shí)施了初步的性能測(cè)試方案,通過(guò)真實(shí)的測(cè)試數(shù)據(jù)歸納出了 Laravel 開(kāi)發(fā)過(guò)程中的一些實(shí)踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應(yīng)用程序響應(yīng)有點(diǎn)慢、20幾個(gè)并...

    warkiz 評(píng)論0 收藏0
  • ThinkPHP 3.2 性能優(yōu)化,實(shí)現(xiàn)高性能API開(kāi)發(fā)

    摘要:目前的業(yè)務(wù)訪問(wèn)量數(shù)千萬(wàn),后端臺(tái),平均使用率。產(chǎn)生的問(wèn)題長(zhǎng)連接數(shù)超過(guò)時(shí),性能會(huì)下降。很可惜,我們目前使用的青云,目前尚不能實(shí)現(xiàn)超高可用,也不能實(shí)現(xiàn)無(wú)縫擴(kuò)容,私網(wǎng)內(nèi)的網(wǎng)絡(luò)傳輸性能延遲都有很大優(yōu)化空間。經(jīng)測(cè)試,性能有的提升。 需求分析 目前的業(yè)務(wù)全站使用ThinkPHP 3.2.3,前臺(tái)、后臺(tái)、Cli、Api等。目前的業(yè)務(wù)API訪問(wèn)量數(shù)千萬(wàn),后端7臺(tái)PHP 5.6,平均CPU使用率20%。 ...

    siberiawolf 評(píng)論0 收藏0
  • 新一代輕量級(jí)PHP擴(kuò)展框架 Asf

    摘要:一是什么全稱用語(yǔ)言編寫的輕量級(jí)擴(kuò)展框架專注于開(kāi)發(fā)。這里只是給出了一種測(cè)試方法通過(guò)多次不同并發(fā)數(shù)測(cè)試結(jié)果得知與原生性能消耗是。業(yè)務(wù)開(kāi)發(fā)速度結(jié)論采用框架開(kāi)發(fā)業(yè)務(wù)代碼量能節(jié)約。 showImg(https://segmentfault.com/img/bVbamHp?w=320&h=320); 一、Asf 是什么? 全稱 API Services Framework, 用C語(yǔ)言編寫的輕量級(jí)P...

    iOS122 評(píng)論0 收藏0
  • windows下laravel5.5手寫教程2路由Eloquent ORM操作(適合初學(xué)者)

    摘要:一路由目錄眾所周知,對(duì)于我們熟知的任何一款框架,例如路由系統(tǒng)都是極其重要的存在。文件用于定義界面的路由。定義在中的路由都是無(wú)狀態(tài)的,并且被分配了中間件組。生成的控制器為每個(gè)行為保留了方法,同時(shí)還包括了處理動(dòng)作和的聲明注釋。 一、路由目錄 眾所周知,對(duì)于我們熟知的任何一款PHP框架,例如TP、CI、YII、路由系統(tǒng)都是極其重要的存在。 對(duì)于laravel框架也一樣,對(duì)于數(shù)據(jù)庫(kù)的操作,無(wú)非...

    BlackFlagBin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<