#perl
Итак, давайте выполним 2 скрипта, и убедимся, что ++$x работает быстрее... Скрипт-1: #!/usr/bin/perl my $x = 0; foreach (1..5_000_000) { $x++; } perl -d:NYTProf test.pl nytprofhtml --open Результат: Скрипт-2: #!/usr/bin/perl my $x = 0; foreach (1..5_000_000) { ++$x; } perl -d:NYTProf test.pl nytprofhtml --open Результат: Вопрос: Почему ++$x работает быстрее, чем $x++?
Ответы
Ответ 1
++$x работает грубо говоря в два шага: делаем $x + 1; передаем значение. $x++ (присваиваемый) работает сложнее, его обычно нельзя реализовать без промежуточной копии: сохраняем значение $x в $temp; делаем $x + 1; передаем значение $temp. P.S.: Не присваиваемый $x++, в умных компиляторах/интерпретаторах, может не отличается от ++$x. P.P.S.: При сильных оптимизациях еще все зависит от прилегающих операций, и при использовании простых типов разница скорее всего вообще пропадет.
Комментариев нет:
Отправить комментарий