1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса(ов)

Эксперимент: сравнение скорости работы print и echo в PHP

Сколько помню себя в PHP, сколько идет спор о том, что же лучше: функция print, или конструкция echo. В целом все согласны, что echo работает быстрее, и вообще удобнее и привычнее в большинстве случаев.

Приводятся сравнительные данные по скорости вывода, но сколь-нибудь классифицированной информации нет. Поэтому я тоже решил вставить свои "пять копеек" в этот спор.

Сравнивать я буду аж три варианта вывода:

Код PHP:
  1. print $a; print $b;
  2. print $a.$b;
  3. echo $a; echo $b;
  4. echo $a.$b;
  5. echo $a, $b;

Сравнить хочу разные длины вывода. Возможно, при разных длинах строк ситуация может отличаться.

Для эксперимента я набросал маленький скриптик.

Код PHP:
  1. function generateRandomString($length = 10)
  2. {
  3. $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  4. $charactersLength = strlen($characters);
  5. $randomString = '';
  6. for ($i = 0; $i < $length; $i++)
  7. {
  8. $randomString .= $characters[rand(0, $charactersLength - 1)];
  9. }
  10. return $randomString;
  11. }
  12. $l1=100;
  13. $l2=200;
  14. $s1=generateRandomString($l1);
  15. $s2=generateRandomString($l2).'<br />';
  16. $msc1 = microtime(true);
  17. print $s1;
  18. print $s2;
  19. $msc1 = microtime(true)-$msc1;
  20. $msc2 = microtime(true);
  21. print $s1.$s2;
  22. $msc2 = microtime(true)-$msc2;
  23. $msc3 = microtime(true);
  24. echo $s1;
  25. echo $s2;
  26. $msc3 = microtime(true)-$msc3;
  27. $msc4= microtime(true);
  28. echo $s1.$s2;
  29. $msc4 = microtime(true)-$msc4;
  30. $msc5= microtime(true);
  31. echo $s1,$s2;
  32. $msc5 = microtime(true)-$msc5;
  33. echo "1=".($msc1*1000)." ms<br />";
  34. echo "2=".($msc2*1000)." ms<br />";
  35. echo "3=".($msc3*1000)." ms<br />";
  36. echo "4=".($msc4*1000)." ms<br />";
  37. echo "5=".($msc5*1000)." ms<br />";

И вот результаты. Для надежности каждый эксперимент проводил по пять раз, отбрасывая самое большое и самое маленькое значение. Время в таблице указано в миллисекундах.

 

Длины $a/$b

100/200 1000/2000 10000/20000
print $a;
print $b;
0.014066696166992 ms
0.0081062316894531 ms
0.0097751617431641 ms
0.01215934753418 ms
0.0088214874267578 ms
0.012874603271484 ms
0.010013580322266 ms
0.0069141387939453 ms
0.010013580322266 ms
0.018119812011719 ms
0.14615058898926 ms
0.11110305786133 ms
0.8389949798584 ms
0.1070499420166 ms
0.79703330993652 ms
print $a.$b; 0.00095367431640625 ms
0.00095367431640625 ms
0.0021457672119141 ms
0.00095367431640625 ms
0.00095367431640625 ms
0.0019073486328125 ms
0.0028610229492188 ms
0.0021457672119141 ms
0.0021457672119141 ms
0.0028610229492188 ms
0.03504753112793 ms
0.025033950805664 ms
0.030040740966797 ms
0.027179718017578 ms
0.046014785766602 ms
echo $a;
echo $b;
0.0019073486328125 ms
0.0011920928955078 ms
0.0019073486328125 ms
0 ms
0 ms
0.082969665527344 ms
0.1060962677002 ms
0.072002410888672 ms
0.078916549682617 ms
0.13518333435059 ms
0.036954879760742 ms
0.036001205444336 ms
0.026941299438477 ms
0.028848648071289 ms
0.04887580871582 ms

echo $a.$b;

0.00095367431640625 ms
0 ms
0.00095367431640625 ms
0 ms
0 ms
0.0021457672119141 ms
0.0019073486328125 ms
0.00095367431640625 ms
0.0030994415283203 ms
0.0028610229492188 ms
0.026941299438477 ms
0.016927719116211 ms
0.02598762512207 ms
0.015020370483398 ms
0.033140182495117 ms

echo $a, $b;

0.0011920928955078 ms
0.00095367431640625 ms
0.00095367431640625 ms
0.0011920928955078 ms
0.00095367431640625 ms
0.00095367431640625 ms
0.0011920928955078 ms
0 ms
0.00095367431640625 ms
0.00095367431640625 ms
0.028133392333984 ms
0.022172927856445 ms
0.020980834960938 ms
0.024795532226562 ms
0.03504753112793 ms

 

 

Длины $a/$b

100000/200000 1000000/2000000
print $a;
print $b;

1.0030269622803 ms
0.23508071899414 ms
0.27799606323242 ms
0.21791458129883 ms
0.36811828613281 ms

2.2621154785156 ms
1.4259815216064 ms
0.87118148803711 ms
2.1860599517822 ms
1.7220973968506 ms
print $a.$b; 0.19407272338867 ms
0.18191337585449 ms
0.1671314239502 ms
0.12516975402832 ms
0.24795532226562 ms
11.845111846924 ms
25.097131729126 ms
12.883901596069 ms
17.091035842896 ms
1.5919208526611 ms
echo $a;
echo $b;
0.10585784912109 ms
0.08392333984375 ms
0.086069107055664 ms
0.10204315185547 ms
0.076055526733398 ms
2.0408630371094 ms
1.9180774688721 ms
0.86712837219238 ms
0.74505805969238 ms
11.387825012207 ms

echo $a.$b;

0.09608268737793 ms
0.10919570922852 ms
0.10800361633301 ms
0.10299682617188 ms
0.11301040649414 ms
2.7229785919189 ms
1.5449523925781 ms
1.1138916015625 ms
3.7858486175537 ms
3.3998489379883 ms

echo $a, $b;

0.088930130004883 ms
0.082969665527344 ms
0.82898139953613 ms
0.071048736572266 ms
0.072002410888672 ms
3.1740665435791 ms
1.068115234375 ms
0.67901611328125 ms
2.7830600738525 ms
2.0208358764648 ms

 Но графическое представление нагляднее, что ни говорите...

Время выполнения команд

Время выполнения команд поближе

 

Процентный баланс времени

Оставьте свой комментарий

Оставить комментарий как гость

0
  • Комментариев нет