Mojo::Collection::XS is a drop-in subclass of Mojo::Collection with hot paths implemented in XS for better performance on large lists.

Features

Installation

perl Makefile.PL
make
make test
make install

Or install via cpanm:

curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojo::Collection::XS

Usage

use Mojo::Collection::XS qw/c/;

# Same API as Mojo::Collection
my $c = Mojo::Collection::XS->new(qw/foo bar baz/);

# Fast iteration (sets $_)
$c->each(sub ($e, $num) {
  say "$num: $e";
});

# Pure iteration without touching $_
$c->while_pure_fast(sub ($e, $num) {
  say "pure $num: $e";
});

# Mapping and filtering
my $upper   = $c->map_fast(sub ($e) { uc $e });
my $filtered = $c->grep_fast(sub ($e) { $e =~ /o/ });

# Convenience constructor
my $with_c = c(qw/foo bar/)->map_pure_fast(sub ($e) { "[$e]" });

API quick reference