Страницы

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

среда, 1 января 2020 г.

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

#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.: При сильных оптимизациях еще все зависит от прилегающих операций, и при использовании простых типов разница скорее всего вообще пропадет.

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

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