- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
sub company_stuff_add_array_elems
{
my $list = shift;
my $count = 0;
foreach ( @$list )
{
$count += $_;
}
return $count;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−172
sub company_stuff_add_array_elems
{
my $list = shift;
my $count = 0;
foreach ( @$list )
{
$count += $_;
}
return $count;
}
List::Util::sum
http://perldoc.perl.org/List/Util.html
Lure Of Chaos 07.06.2013 14:41 # 0
Elvenfighter 07.06.2013 20:45 # 0
:)
inkanus-gray 07.06.2013 20:49 # +1
guest 28.01.2017 11:15 # 0
anonimb84a2f6fd141 07.06.2013 21:15 # −1
Но зачем?
Dummy00001 08.06.2013 00:19 # 0
но все равно, код скорее всего говно.
an0nym 09.06.2013 11:46 # −1
Dummy00001 09.06.2013 12:21 # 0
но тем не менее, передача по стеку всего списка отностительно дорогая операция.
я когда то находил на перле писаный merge sort использующий ссылки на массив + индексы. чисто для сравнения сделал тривиальный merge sort. тривиальная реализация была всего лишь где-то на 10% медленее.
guest 28.01.2017 11:37 # 0
guest 11.04.2017 05:55 # 0
guest 25.02.2017 20:58 # 0
guest 20.01.2017 01:06 # −1
gh0stwizard 13.06.2013 20:48 # 0
Не, я не стану спорить, что память дешевая, что у вас не крутится никаких других жрущих память процессов и из ваших 8гб у вас всегда "свободны" все 7гб и удвоенное потребление памяти из-за того что вы тупо копируете массивы для вас ничего не значит. А потеря производительности на разыменовывания в обмен на двойное потребление озу (да на нее надо тоже потратить время на malloc/realloc) смотрится куда более предпочтительной.
kainwinterheart 13.06.2013 21:41 # 0
azazel:list-util-sum kain$ cat xs.pl
use strict;
use List::Util 'sum';
my @a = ( 1 .. 10**6 );
use Time::HiRes 'time';
my $t = time();
&sum( @a );
printf( '%.6f' . "\n", time() - $t );
azazel:list-util-sum kain$ perl xs.pl
0.015808
azazel:list-util-sum kain$ cat pp.pl
use strict;
sub company_stuff_add_array_elems
{
my $list = shift;
my $count = 0;
foreach ( @$list )
{
$count += $_;
}
return $count;
}
my @a = ( 1 .. 10**6 );
use Time::HiRes 'time';
my $t = time();
&company_stuff_add_array_elems( \@a );
printf( '%.6f' . "\n", time() - $t );
azazel:list-util-sum kain$ perl pp.pl
0.098781
gh0stwizard 13.06.2013 21:57 # 0
guest 07.02.2017 09:37 # 0
Dummy00001 20.01.2017 02:03 # 0
разница производительности тут из-за того что List::Util это XS модуль писаный на С.
guest 07.02.2017 07:04 # 0
barop 20.01.2017 02:11 # 0
царское байтоёбство в моем перле, лол
barop 28.01.2017 14:40 # 0