Skip to content

Instantly share code, notes, and snippets.

@colomon
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colomon/8e89203b8dd97b88cf56 to your computer and use it in GitHub Desktop.
Save colomon/8e89203b8dd97b88cf56 to your computer and use it in GitHub Desktop.
($model.keys (-) $current.keys, $current.keys (-) $model.keys, $current.keys (&) $model.keys)

timing 5m59s

http://www.harmonyware.com/files/profile-1409260876.63832.html

=============================================================

my @mk = $model.keys;
my @ck = $current.keys;
(@mk (-) @ck, @ck (-) @mk, @ck (&) @mk)

timing 4m56s

http://www.harmonyware.com/files/profile-1409261597.16634.html

=============================================================

my $mk = $model.keys.Set;
my $ck = $current.keys.Set;
($mk (-) $ck, $ck (-) $mk, $ck (&) $mk)

timing 4m14s

http://www.harmonyware.com/files/profile-1409263995.02766.html

=============================================================

my $model-only = [];
my $current-only = [];
my $both = [];
for $model.keys -> $m {
    if $current{$m}:exists {
        $both.push($m);
    } else {
        $model-only.push($m);
    }
}

for $current.keys -> $c {
    unless $model{$c}:exists {
        $current-only.push($c);
    }
}

($model-only, $current-only, $both);

timing 3m59

http://www.harmonyware.com/files/profile-1409262234.48596.html

@colomon
Copy link
Author

colomon commented Aug 29, 2014

my $mk = $model.keys.Set;
my $ck = $current.keys.Set;
($mk (-) $ck, $ck (-) $mk, $ck (&) $mk)

timing (with jit) 3m50s

http://www.harmonyware.com/files/profile-1409278389.53893.html

for $model.keys -> $m {
    if $current{$m}:exists {
        $both.push($m);
    } else {
        $model-only.push($m);
    }
}

(etc, same as last above)

timing (jit) 3m40s

http://www.harmonyware.com/files/profile-1409279343.36436.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment