<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) [TOC] 異步并發的服務器里經常使用隊列實現生產者消費者模型,解決并發排隊問題。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); } ~~~
                  <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>

                              哎呀哎呀视频在线观看