#!/perl/bin/perl # # bench.pl -- use strict; use warnings; use diagnostics; use Benchmark qw(:all); my $str = '|0' x (shift @ARGV || 100_000); sub caseone { $_ = $str; s/.//; } sub casetwo { $_ = $str; substr($_,0,1) = ''; } sub casethree { $_ = $str; $_ = reverse $_; chop; $_ = reverse $_; } sub casefour { $_ = $str; $_ = substr($_,1); } cmpthese(-2, { 'regex' => 'caseone', 'substr_mod' => 'casetwo', 'reverse' => 'casethree', 'susbtr_copy' => 'casefour', }); #### # string length 2 * 10: Rate reverse regex substr_mod susbtr_copy reverse 797484/s -- -29% -30% -41% regex 1125463/s 41% -- -1% -16% substr_mod 1131927/s 42% 1% -- -16% susbtr_copy 1344489/s 69% 19% 19% -- # string length 2 * 100_000: Rate reverse susbtr_copy regex substr_mod reverse 1385/s -- -51% -60% -80% susbtr_copy 2847/s 106% -- -17% -58% regex 3437/s 148% 21% -- -49% substr_mod 6771/s 389% 138% 97% -- # with 2 * 1e7: Rate reverse susbtr_copy regex substr_mod reverse 8.61/s -- -54% -58% -81% susbtr_copy 18.7/s 117% -- -8% -58% regex 20.4/s 137% 9% -- -54% substr_mod 44.6/s 418% 139% 119% --