Страницы

Поиск по вопросам

вторник, 8 января 2019 г.

Почему ++$x работает быстрее, чем $x++?

Итак, давайте выполним 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++?


Ответ

++$x работает грубо говоря в два шага:
делаем $x + 1 передаем значение.
$x++ (присваиваемый) работает сложнее, его обычно нельзя реализовать без промежуточной копии:
сохраняем значение $x в $temp делаем $x + 1 передаем значение $temp
P.S.: Не присваиваемый $x++, в умных компиляторах/интерпретаторах, может не отличается от ++$x
P.P.S.: При сильных оптимизациях еще все зависит от прилегающих операций, и при использовании простых типов разница скорее всего вообще пропадет.

Комментариев нет:

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