44. ▸ 1
▸ push join
# push -> join
my @str;
for (1 .. 1_000_000) {
push @str, "The quick brown fox jumps over the lazy dog.";
}
my $result = join "", @str;
# concat
my $result;
for (1 .. 1_000_000) {
$result .= "The quick brown fox jumps over the lazy dog.";
}
45. ▸
▸
# multiple 2, 4 times
my @numbers;
for (1 .. 100_000_000) {
push @numbers, $_ * 2 * 2 * 2 * 2;
}
# multiple 16, 1 time
my @numbers;
for (1 .. 100_000_000) {
push @numbers, $_ * 16;
}
46. ▸
▸
# function in loop
sub sum {
my ($x, $y) = @_;
return $x + $y;
}
my $total = 0;
for (1 .. 1_000_000) {
$total = sum($total, $_);
}
# loop in function
sub sum_list {
my ($list) = @_;
my $result;
for (@$list) {
$result += $_;
}
return $result;
}
my $total = sum_list([1 .. 1_000_000]);
47. ▸ Function in Loop: 360.701 msec
▸ Loop in Function: 94.884 msec
▸
Function in Loop
▸
48. Struct of Arrays
▸
▸ Perl
▸ Struct of Arrays (SoA) Array of Structs (AoS)
▸ AoS
▸
SoA
49. Struct of Arrays
▸ SoA AoS Clone
# Array of Structs
my $aos = [];
for (1 .. 100_000) {
push @$aos, { number => $_, double => $_ * 2 };
}
my $copy = clone($aos);
# Struct of Arrays
my $soa = {};
my @numbers;
my @doubles;
my $count;
for (1 .. 100_000) {
push @numbers, $_;
push @doubles, $_ * 2;
}
$soa = { number => @numbers, double => @doubles };
my $copy = clone($soa);