Отладка некоторого кода закончилась проверкой различий в утверждениях, таких как $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;
Что происходит на фоне, это так по-другому?
РЕДАКТИРОВАТЬ:
Интересно, что при использовании массива и гипероператоров производительность значительно увеличивается при использовании +=
.
например, @[email protected]>>+<<@value;
vs @counter>>+=<<@value;
Я получаю примерно 2,8 раза итераций цикла, используя >>+=<<
с массивами из 10_000 элементов.
Насколько я могу судить по time
cmd, минимальное параллельное выполнение в любом случае минимально (общее количество пользователей + система находится в пределах 2% от реального времени).
Любое понимание того, как/почему это было бы здорово. Спасибо!