Skip to content

Instantly share code, notes, and snippets.

@moritz
Last active August 29, 2015 14:13
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 moritz/ab4e7cd01c36032e4d6b to your computer and use it in GitHub Desktop.
Save moritz/ab4e7cd01c36032e4d6b to your computer and use it in GitHub Desktop.
Benchmarks for string concatenation for https://github.com/perl6/nqp/pull/106
my @elems := nqp::list('abracadabra', '42', '', 'foobar', 'lskdfjasldfjk',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
'abcd', 'zzzzz', 'flurbblerg', 'alsdjfslakdfjs', 'a', 'bb',
);
my int $i := 100_000;
while $i {
nqp::join('', @elems);
nqp::join('slightly longer', @elems);
nqp::join('BOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM', @elems);
$i--;
}
before = [4.95, 5.03, 5.18, 5.05, 5.05, 5.43, 5.00, 5.25];
before_startup = [2.12, 1.99, 2.04, 2.06, 1.95, 2.04, 1.98, 1.95, 2.02]
after = [4.67, 4.41, 4.58, 4.43, 4.65, 4.87, 4.77, 4.61];
after_startup = [2.25, 2.01, 2.06, 2.34, 2.03, 1.82, 2.05, 2.08, 2.11];
mean(before_startup)
std(before_startup)
mean(after_startup)
std(after_startup)
before_avg = mean(before)
std(before)
after_avg = mean(after)
std(after)
# sppedup in percent
100 * (1 - after_avg / before_avg)
# how many standard deviations apart?
(before_avg - after_avg) / (0.5 * (std(before) + std(after)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment