in reply to Challenge: CPU-optimized byte-wise or-equals (for a meter of beer)
sub nijo { use bytes; my ($s1, $s2) = @_; my $idx = 0; my $len; my @chunks = split /\0/, $s1; foreach my $chunk (@chunks) { $len = length($chunk); substr ($s2, $idx, $len) = $chunk; $idx = $idx + 1 + $len; } return $s2; }
Rate split1 substr1 ikegami_s avar corion avar2 nijo ike +gami_tr moritz split1 3.07/s -- -84% -86% -99% -99% -99% -99% + -99% -100% substr1 19.4/s 532% -- -8% -95% -96% -96% -96% + -96% -98% ikegami_s 21.2/s 590% 9% -- -95% -95% -95% -96% + -96% -98% avar 410/s 13254% 2013% 1834% -- -8% -8% -20% + -25% -59% corion 445/s 14383% 2192% 1998% 8% -- -0% -13% + -19% -56% avar2 446/s 14428% 2199% 2004% 9% 0% -- -13% + -19% -56% nijo 514/s 16640% 2549% 2324% 25% 16% 15% -- + -6% -49% ikegami_tr 549/s 17784% 2730% 2490% 34% 23% 23% 7% + -- -46% moritz 1009/s 32749% 5098% 4658% 146% 127% 126% 96% + 84% -- 1..9 ok 1 - corion gets some value ok 2 - substr1 gets same value ok 3 - split1 gets same value ok 4 - moritz gets same value ok 5 - nijo gets same value ok 6 - ikegami_tr gets same value ok 7 - ikegami_s gets same value ok 8 - avar gets same value ok 9 - avar2 gets same value
|
|---|