Отладка некоторого кода закончилась проверкой различий в таких выражениях, как $counter=$counter + 1;
против $counter+=1;
my $run=True;
my $counter=0;
my $sup=Supply.interval(1);
my $tap= $sup.tap({
$run=$_ < 10;
});
{
while $run {
#$counter+=1;
$counter=$counter + 1;
}
$tap.close;
say "Iterations per second: {$counter/(now - ENTER now)}"; #
}
Я получаю примерно на 20% больше итераций в секунду для $counter=$counter+1
по сравнению с $counter+=1;
Что происходит на фоне, который так отличается?
РЕДАКТИРОВАТЬ:
Интересно, что при попытке это с массивом и гипероператорами производительностьзначительно увеличивается при использовании +=
.
например @counter=@counter>>+<<@value;
против @counter>>+=<<@value;
Я получаю примерно в 2,8 раза итерации цикла, используя >>+=<<
с массивами из 10_000 элементов.
Насколько я могу судить через time
cmd, минимальное параллельное выполнение в любом случае минимально (общее количество пользователей + система находится в пределах 2% от реального времени).
Любое понимание того, как / почему это было бы здорово.Спасибо!