because the map generates an anon array that is an "extra step" and that array is copied to @a.
No array is created. One million scalars are created, but the question wasn't about that snippet. It was provided as a baseline.
In your later code, you have a map within a map which is similar to a foreach within a foreach. So it is going to run like 1 million times slower.
No, it's not multiplicative like a foreach in a foreach. It's additive like a foreach after a foreach.
my @array = map A, map B, LIST;
is functionally similar to
my @list1;
for (LIST) {
push @list1, B;
}
my @list2;
for (@list1) {
push @list2, A;
}
my @array = @list2;
Snippet three should take about 0.21 + (0.21-0.06) = 0.56, but it's taking 31.48 due to excessive paging. Why is it paging so much?