From 66cf6f811f3e235142bf292323d2e2a3e67873c9 Mon Sep 17 00:00:00 2001 From: Elizabeth Mattijsen Date: Wed, 8 Jan 2020 22:33:17 +0100 Subject: [PATCH] Make Array[Int].raku at least 5% faster - at least one scalar allocation less - call Type.raku only once - better optimized at handling "holes" in the array --- src/core.c/TypedArray.pm6 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core.c/TypedArray.pm6 b/src/core.c/TypedArray.pm6 index 5ff6006afbc..5cc180dba6b 100644 --- a/src/core.c/TypedArray.pm6 +++ b/src/core.c/TypedArray.pm6 @@ -105,8 +105,11 @@ } multi method raku(::?CLASS:D \SELF:) { - my $args = self.map({ ($_ // TValue).raku(:arglist) }).join(', '); - 'Array[' ~ TValue.raku ~ '].new(' ~ $args ~ ')'; + my $type := TValue.raku; + my $raku := self.map({ + nqp::isconcrete($_) ?? .raku(:arglist) !! $type + }).join(', '); + 'Array[' ~ $type ~ '].new(' ~ $raku ~ ')'; } } method ^parameterize(Mu:U \arr, Mu \t, |c) {