今天看php的spl標準庫部分裡面涉及到資料結構其中有 splqueue 來實現佇列效果,但是我剛接觸php的時候學習到的是 使用array的 array_push 和 array_pop 就可以實現佇列效果啦啊,那麼說 spl中的這個是不是顯得很雞肋呢??後來進過查詢資料並且實際執行一下程式後發現,其實在效能方面,使用spl的資料結構比使用array模擬出來的佇列在效能上強很多:
array陣列模擬佇列,處理100000任務
複製**
list($t1, $t2) = explode(』 ', microtime());
s t=
(flo
at)s
prin
tf(′
st = (float)sprintf('%.0f', (floatval(
st=(fl
oat)
spri
ntf(
′t1) + floatval($t2)) * 1000);
a rr
q=ar
ray(
);fo
r(
arrq = array(); for(
arrq=a
rray
();f
or(i = 0; $i <100000; $i++)
', got 'eof' at end of input: … array_shift(arrq);}}}po
pn=c
ount
(popn = count(
popn=c
ount
(arrq);
for ($j = 0; $j < $popn; katex parse error: expected '}', got 'eof' at end of input: … array_shift(arrq);
}list($t1, $t2) = explode(』 ', microtime());
e t=
(flo
at)s
prin
tf(′
et = (float)sprintf('%.0f', (floatval(
et=(fl
oat)
spri
ntf(
′t1) + floatval($t2)) * 1000);
echo $et - $st;
複製**
執行三次取平均值為:3900 ms
使用splqueue
複製**
list($t1, $t2) = explode(』 ', microtime());
s t=
(flo
at)s
prin
tf(′
st = (float)sprintf('%.0f', (floatval(
st=(fl
oat)
spri
ntf(
′t1) + floatval($t2)) * 1000);
s pl
q=ne
wspl
queu
e;fo
r(
splq = new splqueue; for(
splq=n
ewsp
lque
ue;f
or(i = 0; $i < 100000; $i++)
}}list($t1, $t2) = explode(』 ', microtime());
e t=
(flo
at)s
prin
tf(′
et = (float)sprintf('%.0f', (floatval(
et=(fl
oat)
spri
ntf(
′t1) + floatval($t2)) * 1000);
echo $et - $st;
複製**
執行三次取平均值為:117 ms
效能提公升 33 倍
深圳**建設
C 中為什麼要使用斷言
斷言assert是僅在debug下有效的巨集,當其中的條件為假時,觸發錯誤提示。使用斷言的目的是捕捉不應該發生的非法情況。注意 不要混淆非法情況與錯誤情況之間的區別,後者的出現是因為 錯誤,是一定要作出處理的。如何使用 1 在函式的入口處,使用斷言檢查引數的有效性 合法性 2 在編寫函式時,要進行反...
React中為什麼要使用immutableJs
當父元件讀取子元件資料form,賦值給obj,然後對obj進行一些修改過程中,直接賦值就是淺拷貝,修改obj之後會影響form物件,也就會影響子元件中的form的值,這也就是js中的隱患,在react中向上層元件或者下層元件傳遞物件,很難保證這個物件是否會被修改,當不希望對form產生影響的時候,需...
為什麼要使用blog
有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...