<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 隊列(Queue) 異步并發的服務器里經常使用隊列實現生產者消費者模型,解決并發排隊問題。PHP的SPL標準庫中提供了SplQueue擴展內置的隊列數據結構。另外PHP的數組也提供了array_pop和array_shift可以使用數組模擬隊列數據結構。 **SplQueue** ~~~ $queue = new SplQueue; //入隊 $queue->push($data); //出隊 $data = $queue->shift(); //查詢隊列中的排隊數量 $n = count($queue); ~~~ **Array模擬隊列** ~~~ $queue = array(); //入隊 $queue[] = $data; //出隊 $data = array_shift($queue); //查詢隊列中的排隊數量 $n = count($queue); ~~~ **性能對比** 雖然使用Array可以實現隊列,但實際上性能會非常差。在一個大并發的服務器程序上,建議使用SplQueue作為隊列數據結構。 100萬條數據隨機入隊、出隊,使用SplQueue僅用2312.345ms即可完成,而使用Array模擬的隊列的程序根本無法完成測試,CPU一直持續在100%。 降低數據條數到1萬條后(100倍),也需要260ms才能完成測試。 SplQueue ~~~ $splq = new SplQueue; for($i = 0; $i < 1000000; $i++) { $data = "hello $i\n"; $splq->push($data); if ($i % 100 == 99 and count($splq) > 100) { $popN = rand(10, 99); for ($j = 0; $j < $popN; $j++) { $splq->shift(); } } } $popN = count($splq); for ($j = 0; $j < $popN; $j++) { $splq->pop(); } ~~~ Array隊列 ~~~ $arrq = array(); for($i = 0; $i <1000000; $i++) { $data = "hello $i\n"; $arrq[] = $data; if ($i % 100 == 99 and count($arrq) > 100) { $popN = rand(10, 99); for ($j = 0; $j < $popN; $j++) { array_shift($arrq); } } } $popN = count($arrq); for ($j = 0; $j < $popN; $j++) { array_shift($arrq); } ~~~ ## 定長數組(SplFixedArray) PHP官方的SPL庫提供了一個定長數組的數據結構,類似與C語言中的數組。和普通的PHP數組不同,定長數組讀寫性能更好。 **官方測試數據** 測試使用PHP 5.4,64位Linux系統 * small data (1,000): * write: SplFixedArray is 15 % faster * read: SplFixedArray is 5 % faster * larger data (512,000): * write: SplFixedArray is 33 % faster * read: SplFixedArray is 10 % faster **使用方法** SplFixedArray使用方法與Array相同,但只支持數字索引的訪問方式。 ~~~ $array = new SplFixedArray(5); $array[1] = 2; $array[4] = "foo"; var_dump($array[0]); // NULL var_dump($array[1]); // int(2) ~~~ 可以使用setSize()方法動態改變定長數組的尺寸。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看