Эксперимент: сравнение скорости работы print и echo в PHP
Сколько помню себя в PHP, сколько идет спор о том, что же лучше: функция print, или конструкция echo. В целом все согласны, что echo работает быстрее, и вообще удобнее и привычнее в большинстве случаев.
Приводятся сравнительные данные по скорости вывода, но сколь-нибудь классифицированной информации нет. Поэтому я тоже решил вставить свои "пять копеек" в этот спор.
Сравнивать я буду аж три варианта вывода:
Код PHP:
print $a; print $b; print $a.$b; echo $a; echo $b; echo $a.$b; echo $a, $b;
Сравнить хочу разные длины вывода. Возможно, при разных длинах строк ситуация может отличаться.
Для эксперимента я набросал маленький скриптик.
Код PHP:
function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $length; $i++) { } return $randomString; } $l1=100; $l2=200; $s1=generateRandomString($l1); $s2=generateRandomString($l2).'<br />'; print $s1; print $s2; print $s1.$s2; echo $s1; echo $s2; echo $s1.$s2; echo $s1,$s2; echo "1=".($msc1*1000)." ms<br />"; echo "2=".($msc2*1000)." ms<br />"; echo "3=".($msc3*1000)." ms<br />"; echo "4=".($msc4*1000)." ms<br />"; 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 |
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 |
Но графическое представление нагляднее, что ни говорите...
Оставьте свой комментарий
Войдите, чтобы оставлять комментарии
Оставить комментарий как гость