aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-11-13 19:37:07 +0000
committerGitHub <noreply@github.com>2023-11-13 19:37:07 +0000
commitc598c54f47fbbc7d1a945a822735b751c61b04e6 (patch)
treed9310c88674fbffdea9b4f6ff914078a6ec7137c
parente0f33dc8918149dfc29fdc1dfbb040c671851630 (diff)
parent2df4e900d634718b16c17ae56ce27e7ec7eb070a (diff)
downloadperlweeklychallenge-club-c598c54f47fbbc7d1a945a822735b751c61b04e6.tar.gz
perlweeklychallenge-club-c598c54f47fbbc7d1a945a822735b751c61b04e6.tar.bz2
perlweeklychallenge-club-c598c54f47fbbc7d1a945a822735b751c61b04e6.zip
Merge pull request #9061 from andemark/challenge-243
ch-1.raku improved
-rw-r--r--challenge-243/mark-anderson/raku/ch-1.raku30
1 files changed, 28 insertions, 2 deletions
diff --git a/challenge-243/mark-anderson/raku/ch-1.raku b/challenge-243/mark-anderson/raku/ch-1.raku
index c5e9532de3..d150879507 100644
--- a/challenge-243/mark-anderson/raku/ch-1.raku
+++ b/challenge-243/mark-anderson/raku/ch-1.raku
@@ -1,13 +1,39 @@
#!/usr/bin/env raku
use Test;
+use Benchy;
is reverse-pairs(1,3,2,3,1), 2;
is reverse-pairs(2,4,3,5,1), 3;
-# I've tried memoize, race, and promises for big lists and those seem
-# to make things slower 🤔
+benchmark();
sub reverse-pairs(*@a)
{
+ my $bag = @a.BagHash;
+
+ sum gather for @a -> $a
+ {
+ $bag{$a}--;
+
+ for $bag.keys -> $k
+ {
+ take $bag{$k} if $a > $k + $k
+ }
+ }
+}
+
+sub reverse-pairs-slow(*@a)
+{
+ grep { .[0] > .[1] * 2 }, @a.combinations(2)
}
+
+sub benchmark
+{
+ my @a = (1..9).roll(2500);
+
+ b 5, { reverse-pairs-slow(@a) }, { reverse-pairs(@a) }
+
+ # Old: 54.254473421s
+ # New: 1.151968905s
+ # NEW version is 47.10x faster
+}