ทดสอบความเร็วของ print และ echo เขียนเมื่อ 2009.07.08 โดย

จากบทความที่แล้วที่เขียนเรื่อง ความแตกต่างของ echo และ print นั้นมีการกล่าวถึงความเร็วที่แตกต่างกัน วันนี้ลองดูผลความเร็วที่แตกต่างกันของทั้ง 2 คำสั่งกัน

โดยเริ่มที่ระบบที่ใช้ทดสอบ
  • CPU AMD Sempron 2400+ 1.665 MHz
  • DDR 512 MB
  • HDD 80 GB
  • CentOS 5.3 32 Bits
ส่วน script ที่ใช้ในการทดสอบ
PHP
  1. <?
  2. class loader {
  3.         private $_starttime = NULL;
  4.         private $_endtime = NULL;
  5.  
  6.         function __construct(){
  7.                 $starttime = microtime();
  8.                 $startarray = explode(" ", $starttime);
  9.                 $this->_starttime = $startarray[1] + $startarray[0];
  10.         }
  11.  
  12.         public function pageload(){
  13.                 $endtime = microtime();
  14.                 $endarray = explode(" ", $endtime);
  15.                 $this->_endtime = $endarray[1] + $endarray[0];
  16.                 return round($this->_endtime - $this->_starttime, 5);
  17.         }
  18.  
  19.         function __tostring(){
  20.                 return sprintf("%0.6f", $this->pageload());
  21.         }
  22. }
  23.  
  24. $result = array();
  25.  
  26. for($j = 0; $j < 20; $j++){
  27.         $timer = new loader();
  28.  
  29.         for($i=0; $i<1000; $i++){
  30.                 echo "Hello world";
  31.         }
  32.  
  33.         $result[] = sprintf("%s", $timer);
  34. }
  35. print_r($result);
  36. echo (array_sum($result)/count($result));
  37. ?>

script เป็นการ สั่ง echo คำว่า "Hello world" จำนวน 1000 ครั้ง ทดสอบทั้งหมด 20 รอบ จากนั้นเอาผลมาเฉลี่ยออกมา
ส่วนของคำสั่ง print ก็เพียงแต่เปลี่ยนคำสั่งในบรรทัดที่ 30 เท่านั้น

การทดสอบทำผ่าน command line ด้วยคำสั่ง เพื่อไม่ให้มี overhead ของ http request อาจทำให้การทดสอบผิดพลาดได้
BASH
  1. php -f test.php

จากผลการทดสอบของ echo ได้
TEXT
  1. Array
  2. (
  3.     [0] => 1.451160
  4.     [1] => 1.458920
  5.     [2] => 0.929450
  6.     [3] => 1.470660
  7.     [4] => 1.453920
  8.     [5] => 1.465520
  9.     [6] => 1.446040
  10.     [7] => 1.448430
  11.     [8] => 1.464920
  12.     [9] => 1.453050
  13.     [10] => 1.470920
  14.     [11] => 1.438810
  15.     [12] => 1.459860
  16.     [13] => 1.463070
  17.     [14] => 1.463870
  18.     [15] => 1.460000
  19.     [16] => 1.452650
  20.     [17] => 1.461150
  21.     [18] => 1.433570
  22.     [19] => 1.460260
  23. )
  24. 1.4303115

ส่วนของ print จะได้
TEXT
  1. Array
  2. (
  3.     [0] => 1.408350
  4.     [1] => 1.464810
  5.     [2] => 0.931530
  6.     [3] => 1.474550
  7.     [4] => 1.469550
  8.     [5] => 1.497290
  9.     [6] => 1.469370
  10.     [7] => 1.461750
  11.     [8] => 1.470250
  12.     [9] => 1.471790
  13.     [10] => 1.472310
  14.     [11] => 1.456070
  15.     [12] => 1.462980
  16.     [13] => 1.466870
  17.     [14] => 1.465110
  18.     [15] => 1.479730
  19.     [16] => 1.483620
  20.     [17] => 1.466210
  21.     [18] => 1.461590
  22.     [19] => 1.501650
  23. )
  24. 1.441769

จะเห็นได้ว่า echo จะเร็วกว่า print 0.011 ที่ 1000 คำสั่ง
ถ้า script มีการใช้งาน echo/print มากๆ จะมีผลต่อ ความเร็วของการแสดงผลแน่นอน

ทั้งนี้เพื่อทดสอบความแตกต่างระหว่าง PHP แบบ cli และแบบ  fast-cgi จึงมีการทดสอบผ่าน fast-cgi ด้วย ซึ่งผลการทดสอบแตกต่างกันอย่างมาก โดยได้ผลดังนี้

ผลการทดสอบของ echo ผ่าน fast-cgi
TEXT
  1. Array
  2. (
  3.     [0] => 0.026820
  4.     [1] => 0.021320
  5.     [2] => 0.034170
  6.     [3] => 0.009530
  7.     [4] => 0.015830
  8.     [5] => 0.018140
  9.     [6] => 0.012720
  10.     [7] => 0.019360
  11.     [8] => 0.020660
  12.     [9] => 0.014080
  13.     [10] => 0.021210
  14.     [11] => 0.017410
  15.     [12] => 0.012820
  16.     [13] => 0.018560
  17.     [14] => 0.020690
  18.     [15] => 0.013240
  19.     [16] => 0.019470
  20.     [17] => 0.017920
  21.     [18] => 0.013870
  22.     [19] => 0.020640
  23. )
  24. 0.018423

ส่วนผลของ print ผ่าน fast-cgi
TEXT
  1. Array
  2. (
  3.     [0] => 0.018180
  4.     [1] => 0.020350
  5.     [2] => 0.018570
  6.     [3] => 0.012630
  7.     [4] => 0.019450
  8.     [5] => 0.020540
  9.     [6] => 0.013960
  10.     [7] => 0.019990
  11.     [8] => 0.020970
  12.     [9] => 0.013030
  13.     [10] => 0.019790
  14.     [11] => 0.018720
  15.     [12] => 0.012100
  16.     [13] => 0.017810
  17.     [14] => 0.018180
  18.     [15] => 0.012180
  19.     [16] => 0.020740
  20.     [17] => 0.020730
  21.     [18] => 0.011990
  22.     [19] => 0.020420
  23. )
  24. 0.0175165

จะเห็นว่า fast-cgi เร็วกว่าแบบ cli อย่างมาก แม้ผลของ echo ผ่าน cli ที่ดีที่สุดยังช้ากว่า print ผ่าน fast-cgi เสียอีก



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย