Я тестировал все эти различные конструкции, используя getrusage()
чтобы вычислить варианты (ru_utime + ru_stime)
до и после их выполнения.
Оказывается, нет никакой разницы в выполнении одной и той же задачи для подобных конструкций. Вот результаты:
printf
(1,5 ± 0,5)% быстрее, чем print
foreach
(6.0 ± 1.0)% быстрее, чем цикл for
(итерирование по индексированному массиву из 1kk элементов)
for
(9,0 ± 1,0)% быстрее, чем цикл while
if/else
(8,0 ± 1,0)% быстрее, чем switch
(проверено в двух случаях, 6 случаях и 10 возможных случаях).
Поэтому мне было интересно, действительно ли эти различия имеют значение? Если мы используем все наиболее эффективные такие конструкции в нашем коде, будет ли это иметь какое-то значение? Может быть, 6%, 8% там, 9% или 10%, подытоживают, изменят эффективность нашего кода?
Или эти различия, тем не менее, не будут заметными, я имею в виду, что ответ сервера на запросы почти не изменится? Кроме того, если мы используем if/else
over switch
, более того, printf
over print
, foreach
over for
, будет ли он потреблять больше памяти?