> IIRC, a long time ago I send you a patch for Sort::Maker benchmarking > script incorporating Sort::Key variants that showed how faster my module > can be. I would try to find it and send it to you again.
Well, I have been unable to find it... but I have redone it :-) Attached are the patch that adds tests for Sort::Key variants to your testing/benchmarking scripts in Sort::Maker and the output I get when I run them on my computer. You can see that Sort::Key sorters are usually between 2 and 3 times faster than any variant generated by Sort::Maker. To be fair, I have to said that in my experience, as the size of the lists to be sorted increases, the gap becomes smaller and for really large data sets, Sort::Key sorters are around 1.5 times faster than the GRT ones generated by Sort::Maker. Memory usage is usually also quite lower in Sort::Key. That's an important thing to consider when your data sets are really big.
diff --git a/t/common.pm b/t/common.pm index 1ac5082..8bdd708 100644 --- a/t/common.pm +++ b/t/common.pm @@ -44,6 +44,7 @@ sub test_driver { } make_test_sorters( $test, $default_styles ) ; + make_sk_sorters($test); if ( $test->{error} ) { @@ -131,6 +132,7 @@ sub benchmark_driver { $test->{input_sets} = [generate_data( $test, $default_sizes )] ; make_test_sorters( $test, $default_styles ) ; + make_sk_sorters($test) ; run_benchmarks( $test, $duration ) ; } @@ -146,7 +148,7 @@ sub run_benchmarks { $entries{ $name } = $name =~ /ref_in/ ? sub { my @sorted = $sorter->( $in_ref ) } : - sub { my @sorted = $sorter->( @input ) } ; + sub { my @sorted = $sorter->( @input ) } ; } $entries{ 'gold' } = @@ -170,7 +172,19 @@ sub generate_data { my( $test, $default_sizes ) = @_ ; my $gen_code = $test->{gen} ; - $gen_code or die "no 'gen' code for test $test->{name}" ; + if( not defined $gen_code) { + if ($test->{data}) { + my $data = $test->{data}; + my $ix = -1; + $gen_code = sub { + $ix = ($ix + 1) % @$data; + $data->[$ix] + } + } + else { + die "no 'gen' code for test $test->{name}" ; + } + } my @sizes = @{ $test->{sizes} || $default_sizes || [100] } ; @@ -241,6 +255,71 @@ sub make_test_sorters { return 1 ; } +my %pre_mod = map { $_ => 1 } qw(signed signed_float unsigned unsigned_float); +my %post_mod = map { $_ => 1 } qw(descending ascending fixed varying no_case case); + +sub make_sk_sorters { + my $test = shift; + if (eval { require Sort::Key; 1 }) { + unless ($test->{ref_in} or $test->{ref_out}) { + my $args = $test->{args} or die "$test->{name} has no args\n" ; + my $arg_sets = ( ref $args eq 'HASH' ) ? $args : { '' => $args } ; + TEST: foreach my $arg_name ( sort keys %{$arg_sets} ) { + my $test_args = $arg_sets->{$arg_name} ; + my $sort_name = $arg_name ? "SK_$arg_name" : "SK"; + my $init = ''; + my @code; + my @types; + my @test_args = @$test_args; + while (@test_args) { + my ($type, %mod); + while (1) { + $type = shift @test_args; + last unless $pre_mod{$type}; + $mod{$type} = 1; + die "bad type specification" unless @test_args; + } + while (@test_args and $post_mod{$test_args[0]}) { + my $mod = shift @test_args; + $mod{$mod} = 1; + if ($mod =~ /^(?:fixed|no_case)$/) { + next TEST; + } + } + + my $code = (@test_args ? shift(@test_args) : '$_'); + if ($type eq 'init_code') { + $init = $code; + } + else { + if (!ref($code) and $type =~ /^(?:string|number)$/) { + if ($type eq 'number') { + if ($mod{unsigned}) { + $type = 'uint'; + } + if ($mod{signed}) { + $type = 'int'; + } + } + $type = "-$type" if $mod{descending}; + push @types, $type; + push @code, $code; + } + else { + warn "unsupported argument, type: $type, ref(code): " . ref($code); + next TEST; + } + } + } + my $sub = eval "sub { $init (" . join(", ", @code) . ") }"; + my $sorter = Sort::Key::multikeysorter($sub, @types); + $test->{sorters}{$sort_name} = $sorter ; + } + } + } + 1; +} + sub count_tests { my( $tests, $default_styles ) = @_ ;
Name "main::bench" used only once: possible typo at t/arrays.t line 1. Sorting 100 elements of 'arrays of strings' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.15 usr + 0.01 sys = 2.16 CPU) @ 3550.46/s (n=7669) SK: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 7552.51/s (n=16540) ST: 2 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 2188.34/s (n=4880) gold: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 1943.64/s (n=4276) orcish: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 1476.17/s (n=3159) plain: 3 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 971.23/s (n=2059) Sorting 100 elements of 'arrays of numbers' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 3 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 2872.20/s (n=6405) SK: 2 wallclock secs ( 2.47 usr + 0.02 sys = 2.49 CPU) @ 7207.23/s (n=17946) ST: 2 wallclock secs ( 1.98 usr + 0.04 sys = 2.02 CPU) @ 2128.71/s (n=4300) gold: 2 wallclock secs ( 2.00 usr + 0.06 sys = 2.06 CPU) @ 1130.58/s (n=2329) orcish: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 1020.29/s (n=2112) plain: 3 wallclock secs ( 2.38 usr + 0.00 sys = 2.38 CPU) @ 894.96/s (n=2130) Sorting 100 elements of 'arrays of multiple strings' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.29 usr + 0.00 sys = 2.29 CPU) @ 1786.03/s (n=4090) SK: 2 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ 4403.40/s (n=9071) ST: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 1748.00/s (n=3496) gold: 3 wallclock secs ( 2.43 usr + 0.00 sys = 2.43 CPU) @ 1699.18/s (n=4129) orcish: 2 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 1356.16/s (n=2753) plain: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 911.36/s (n=2005) Sorting 100 elements of 'arrays of multiple numbers' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 1581.04/s (n=3336) SK: 2 wallclock secs ( 2.27 usr + 0.00 sys = 2.27 CPU) @ 6312.33/s (n=14329) ST: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2054.59/s (n=4479) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 1947.64/s (n=4129) orcish: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 1519.91/s (n=3207) plain: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 1103.62/s (n=2439) 1..2 Name "main::bench" used only once: possible typo at t/bad_code.t line 1. ok 1 - bad extraction code - array ref ok 2 - bad extraction code - scalar ref no 'gen' code for test closure error at t/common.pm line 185. unsupported argument, type: string, ref(code): CODE at t/common.pm line 312. unsupported argument, type: string, ref(code): Regexp at t/common.pm line 312. Sorting 100 elements of 'regex code' Benchmark: running GRT_code, GRT_qr, GRT_string, SK_string, ST_code, ST_qr, ST_string, gold, orcish_code, orcish_qr, orcish_string, plain_code, plain_qr, plain_string for at least 2 CPU seconds... GRT_code: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 2629.86/s (n=5549) GRT_qr: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2724.88/s (n=5804) GRT_string: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2662.39/s (n=5804) SK_string: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 4784.58/s (n=10239) ST_code: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 1920.47/s (n=4129) ST_qr: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 1965.90/s (n=4266) ST_string: 3 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 1913.00/s (n=4266) gold: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 692.82/s (n=1448) orcish_code: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2031.43/s (n=4266) orcish_qr: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 2088.32/s (n=4469) orcish_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2098.12/s (n=4469) plain_code: 3 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 517.79/s (n=1077) plain_qr: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 577.56/s (n=1184) plain_string: 2 wallclock secs ( 2.26 usr + 0.00 sys = 2.26 CPU) @ 566.37/s (n=1280) unsupported argument, type: string, ref(code): CODE at t/common.pm line 312. Sorting 100 elements of 'array code' Benchmark: running GRT_code, GRT_string, SK_string, ST_code, ST_string, gold, orcish_code, orcish_string, plain_code, plain_string for at least 2 CPU seconds... GRT_code: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 3125.12/s (n=6719) GRT_string: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 3583.64/s (n=7669) SK_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 7232.86/s (n=15406) ST_code: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2238.07/s (n=4879) ST_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2406.10/s (n=5125) gold: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 2122.75/s (n=4479) orcish_code: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 1353.74/s (n=2897) orcish_string: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 1476.17/s (n=3159) plain_code: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 752.58/s (n=1603) plain_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 999.06/s (n=2128) unsupported argument, type: string, ref(code): CODE at t/common.pm line 312. Sorting 100 elements of 'hash code' Benchmark: running GRT_code, GRT_string, SK_string, ST_code, ST_string, gold, orcish_code, orcish_string, plain_code, plain_string for at least 2 CPU seconds... GRT_code: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 3048.50/s (n=6097) GRT_string: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 3501.83/s (n=7669) SK_string: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 6791.00/s (n=14329) ST_code: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 2176.64/s (n=4658) ST_string: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 2454.34/s (n=5375) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 1938.97/s (n=4130) orcish_code: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 1386.12/s (n=2897) orcish_string: 2 wallclock secs ( 2.22 usr + 0.00 sys = 2.22 CPU) @ 1423.42/s (n=3160) plain_code: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 718.10/s (n=1508) plain_string: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 935.91/s (n=2059) Sorting 100 elements of 'descending fixed - numeric data' Benchmark: running GRT_fixed, GRT_varying, SK_varying, gold for at least 2 CPU seconds... GRT_fixed: 2 wallclock secs ( 2.36 usr + 0.00 sys = 2.36 CPU) @ 3033.90/s (n=7160) GRT_varying: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2899.08/s (n=6320) SK_varying: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 7500.93/s (n=16127) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2695.75/s (n=5715) 1..11 unsupported argument, type: xxx, ref(code): at t/common.pm line 312. ok 1 - NO_STYLE_unknown sort of unknown option too few keys at t/common.pm line 318 # Looks like you planned 11 tests but ran 1. # Looks like your test exited with 255 just after 1. Name "main::bench" used only once: possible typo at t/GRT.t line 1. Sorting 100 elements of 'simple string' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 3902.82/s (n=8313) SK: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 8063.68/s (n=17095) gold: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2763.81/s (n=5804) Sorting 100 elements of 'unsigned integer' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 4535.89/s (n=9480) SK: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 11600.46/s (n=25289) gold: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 2873.27/s (n=5804) Sorting 100 elements of 'unsigned integer descending' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 4419.43/s (n=9325) SK: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 11547.95/s (n=25290) gold: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 2942.44/s (n=6032) Sorting 100 elements of 'signed integer' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 3 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 4600.00/s (n=10258) SK: 3 wallclock secs ( 2.22 usr + 0.00 sys = 2.22 CPU) @ 11553.15/s (n=25648) gold: 3 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 2925.46/s (n=6319) Sorting 100 elements of 'signed integer descending' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 4398.58/s (n=9325) SK: 3 wallclock secs ( 2.33 usr + 0.00 sys = 2.33 CPU) @ 11012.02/s (n=25658) gold: 3 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 2925.46/s (n=6319) Sorting 100 elements of 'unsigned float' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 3 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 3621.10/s (n=7894) SK: 3 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 10500.46/s (n=22891) gold: 3 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2872.38/s (n=6032) Sorting 100 elements of 'unsigned float descending' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 3293.63/s (n=6719) SK: 2 wallclock secs ( 2.01 usr + 0.00 sys = 2.01 CPU) @ 10369.65/s (n=20843) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2675.12/s (n=5698) Sorting 100 elements of 'signed float' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 3550.46/s (n=7669) SK: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 10646.98/s (n=22891) gold: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 2937.67/s (n=6316) Sorting 100 elements of 'signed float descending' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 3169.34/s (n=6719) SK: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 10548.85/s (n=22891) gold: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 2803.86/s (n=5804) Sorting 100 elements of 'plain string' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 3735.16/s (n=8180) SK: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 7309.26/s (n=15788) gold: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 2511.68/s (n=5375) unsupported argument, type: no_case, ref(code): at t/common.pm line 312. Sorting 100 elements of 'plain string no_case' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 4091.32/s (n=8960) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 2176.64/s (n=4658) Sorting 100 elements of 'fixed string' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 3811.06/s (n=8270) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2683.10/s (n=5715) Sorting 100 elements of 'string no_case fixed' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 4055.66/s (n=8963) gold: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 2250.24/s (n=4658) Sorting 100 elements of 'string descending fixed' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 3600.94/s (n=7670) gold: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 2633.64/s (n=5715) Sorting 100 elements of 'string no_case descending fixed' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 3 wallclock secs ( 2.44 usr + 0.00 sys = 2.44 CPU) @ 3143.44/s (n=7670) gold: 3 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 2207.58/s (n=4658) Sorting 100 elements of 'varying string' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 2831.22/s (n=5804) SK: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 7176.36/s (n=15788) gold: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 2633.64/s (n=5715) Sorting 100 elements of 'string no_case varying' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 3077.98/s (n=6710) gold: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 2227.85/s (n=4879) Sorting 100 elements of 'string descending varying' Benchmark: running GRT, SK, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2790.37/s (n=6083) SK: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 6945.70/s (n=15350) gold: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 2601.50/s (n=5203) Sorting 100 elements of 'string no_case descending varying' Benchmark: running GRT, gold for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 2674.65/s (n=5804) gold: 2 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 2194.58/s (n=4455) Name "main::bench" used only once: possible typo at t/hashes.t line 1. Sorting 100 elements of 'hashes of strings' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.34 usr + 0.00 sys = 2.34 CPU) @ 3282.05/s (n=7680) SK: 2 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 6987.19/s (n=14184) ST: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 2432.13/s (n=5375) gold: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 1895.19/s (n=3942) orcish: 2 wallclock secs ( 2.33 usr + 0.00 sys = 2.33 CPU) @ 1437.77/s (n=3350) plain: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 944.95/s (n=2060) Sorting 100 elements of 'hashes of numbers' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 3135.05/s (n=6709) SK: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 8594.93/s (n=18651) ST: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 2803.86/s (n=5804) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 1947.64/s (n=4129) orcish: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 1602.39/s (n=3349) plain: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 1153.77/s (n=2446) Sorting 100 elements of 'hashes of multiple strings' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 2575.74/s (n=5203) SK: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 5248.17/s (n=11441) ST: 3 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 1915.96/s (n=4081) gold: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 1868.25/s (n=3942) orcish: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 1410.43/s (n=2976) plain: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 844.24/s (n=1832) Sorting 100 elements of 'hashes of multiple numbers' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 4 wallclock secs ( 3.61 usr + 0.01 sys = 3.62 CPU) @ 1179.28/s (n=4269) SK: 3 wallclock secs ( 2.02 usr + 0.01 sys = 2.03 CPU) @ 4587.68/s (n=9313) ST: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2290.61/s (n=4879) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 1842.06/s (n=3942) orcish: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 1540.83/s (n=3359) plain: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 1108.64/s (n=2439) Name "main::bench" used only once: possible typo at t/init_code.t line 1. Sorting 400 elements of 'init_code' Benchmark: running GRT_init_code, GRT_no_init, SK_init_code, SK_no_init, ST_init_code, ST_no_init, gold for at least 2 CPU seconds... GRT_init_code: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 214.02/s (n=458) GRT_no_init: 3 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 231.43/s (n=486) SK_init_code: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 472.48/s (n=1030) SK_no_init: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 738.32/s (n=1580) ST_init_code: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 254.29/s (n=534) ST_no_init: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 283.72/s (n=610) gold: 3 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 82.69/s (n=172) Sorting 1000 elements of 'init_code' Benchmark: running GRT_init_code, GRT_no_init, SK_init_code, SK_no_init, ST_init_code, ST_no_init, gold for at least 2 CPU seconds... GRT_init_code: 2 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 78.48/s (n=175) GRT_no_init: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 90.87/s (n=189) SK_init_code: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 178.44/s (n=389) SK_no_init: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 276.82/s (n=609) ST_init_code: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 90.70/s (n=195) ST_no_init: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 100.50/s (n=201) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 26.64/s (n=57) Sorting 400 elements of 'deep init_code' Benchmark: running GRT_init_code, GRT_no_init, SK_init_code, SK_no_init, ST_init_code, ST_no_init, gold for at least 2 CPU seconds... GRT_init_code: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 187.92/s (n=389) GRT_no_init: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 181.78/s (n=389) SK_init_code: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 388.43/s (n=839) SK_no_init: 2 wallclock secs ( 2.31 usr + 0.00 sys = 2.31 CPU) @ 481.82/s (n=1113) ST_init_code: 3 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 120.29/s (n=249) ST_no_init: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 180.69/s (n=365) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 54.25/s (n=115) Sorting 1000 elements of 'deep init_code' Benchmark: running GRT_init_code, GRT_no_init, SK_init_code, SK_no_init, ST_init_code, ST_no_init, gold for at least 2 CPU seconds... GRT_init_code: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 74.65/s (n=159) GRT_no_init: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 72.73/s (n=152) SK_init_code: 3 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 154.59/s (n=320) SK_no_init: 3 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 213.79/s (n=434) ST_init_code: 2 wallclock secs ( 2.01 usr + 0.00 sys = 2.01 CPU) @ 86.57/s (n=174) ST_no_init: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 88.79/s (n=190) gold: 2 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 18.23/s (n=37) unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. unsupported argument, type: ref_out, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple string' Benchmark: running GRT_default, GRT_ref_in, GRT_ref_in_ref_out, GRT_ref_out, SK_default, ST_default, ST_ref_in, ST_ref_in_ref_out, ST_ref_out, gold, orcish_default, orcish_ref_in, orcish_ref_in_ref_out, orcish_ref_out, plain_default, plain_ref_in, plain_ref_in_ref_out, plain_ref_out for at least 2 CPU seconds... GRT_default: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 3922.94/s (n=8552) GRT_ref_in: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 3919.43/s (n=8270) GRT_ref_in_ref_out: 3 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 4221.70/s (n=8950) GRT_ref_out: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 4227.49/s (n=8920) SK_default: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 7447.17/s (n=15788) ST_default: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 2504.81/s (n=5210) ST_ref_in: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2446.01/s (n=5210) ST_ref_in_ref_out: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 2474.19/s (n=5369) ST_ref_out: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 2492.82/s (n=5210) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 2712.15/s (n=5804) orcish_default: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2254.29/s (n=4734) orcish_ref_in: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 2228.71/s (n=4658) orcish_ref_in_ref_out: 3 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2312.74/s (n=4903) orcish_ref_out: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 2269.30/s (n=4879) plain_default: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 1157.47/s (n=2558) plain_ref_in: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 1139.72/s (n=2439) plain_ref_in_ref_out: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 1168.49/s (n=2559) plain_ref_out: 3 wallclock secs ( 2.22 usr + 0.00 sys = 2.22 CPU) @ 1152.70/s (n=2559) Sorting 1000 elements of 'simple string' Benchmark: running GRT_default, GRT_ref_in, GRT_ref_in_ref_out, GRT_ref_out, SK_default, ST_default, ST_ref_in, ST_ref_in_ref_out, ST_ref_out, gold, orcish_default, orcish_ref_in, orcish_ref_in_ref_out, orcish_ref_out, plain_default, plain_ref_in, plain_ref_in_ref_out, plain_ref_out for at least 2 CPU seconds... GRT_default: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 355.94/s (n=719) GRT_ref_in: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 352.34/s (n=754) GRT_ref_in_ref_out: 2 wallclock secs ( 2.25 usr + 0.00 sys = 2.25 CPU) @ 372.89/s (n=839) GRT_ref_out: 2 wallclock secs ( 2.19 usr + 0.01 sys = 2.20 CPU) @ 376.82/s (n=829) SK_default: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 603.30/s (n=1279) ST_default: 3 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 190.48/s (n=400) ST_ref_in: 2 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 188.24/s (n=384) ST_ref_in_ref_out: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 187.38/s (n=401) ST_ref_out: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 186.51/s (n=401) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 167.76/s (n=359) orcish_default: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 151.98/s (n=307) orcish_ref_in: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 153.85/s (n=320) orcish_ref_in_ref_out: 2 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 156.86/s (n=320) orcish_ref_out: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 153.49/s (n=330) plain_default: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 71.69/s (n=157) plain_ref_in: 3 wallclock secs ( 2.22 usr + 0.00 sys = 2.22 CPU) @ 70.72/s (n=157) plain_ref_in_ref_out: 2 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ 73.79/s (n=152) plain_ref_out: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 72.60/s (n=151) unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. unsupported argument, type: ref_out, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple number' Benchmark: running GRT_default, GRT_ref_in, GRT_ref_in_ref_out, GRT_ref_out, SK_default, ST_default, ST_ref_in, ST_ref_in_ref_out, ST_ref_out, gold, orcish_default, orcish_ref_in, orcish_ref_in_ref_out, orcish_ref_out, plain_default, plain_ref_in, plain_ref_in_ref_out, plain_ref_out for at least 2 CPU seconds... GRT_default: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 3409.30/s (n=7330) GRT_ref_in: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 3486.19/s (n=7321) GRT_ref_in_ref_out: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 3617.45/s (n=7669) GRT_ref_out: 3 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 3706.10/s (n=7894) SK_default: 3 wallclock secs ( 2.29 usr + 0.00 sys = 2.29 CPU) @ 9389.96/s (n=21503) ST_default: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 2831.22/s (n=5804) ST_ref_in: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2763.81/s (n=5804) ST_ref_in_ref_out: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2845.28/s (n=6032) ST_ref_out: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 2831.22/s (n=5804) gold: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 2803.86/s (n=5804) orcish_default: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 1984.19/s (n=4266) orcish_ref_in: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 1979.63/s (n=4276) orcish_ref_in_ref_out: 3 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 2050.00/s (n=4469) orcish_ref_out: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2002.82/s (n=4266) plain_default: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 1123.96/s (n=2439) plain_ref_in: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 1093.43/s (n=2329) plain_ref_in_ref_out: 2 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 1108.64/s (n=2439) plain_ref_out: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 1123.96/s (n=2439) Sorting 1000 elements of 'simple number' Benchmark: running GRT_default, GRT_ref_in, GRT_ref_in_ref_out, GRT_ref_out, SK_default, ST_default, ST_ref_in, ST_ref_in_ref_out, ST_ref_out, gold, orcish_default, orcish_ref_in, orcish_ref_in_ref_out, orcish_ref_out, plain_default, plain_ref_in, plain_ref_in_ref_out, plain_ref_out for at least 2 CPU seconds... GRT_default: 2 wallclock secs ( 2.01 usr + 0.00 sys = 2.01 CPU) @ 323.38/s (n=650) GRT_ref_in: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 322.00/s (n=644) GRT_ref_in_ref_out: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 327.78/s (n=708) GRT_ref_out: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 333.18/s (n=703) SK_default: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 896.73/s (n=1919) ST_default: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 212.62/s (n=455) ST_ref_in: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 207.66/s (n=434) ST_ref_in_ref_out: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 215.42/s (n=461) ST_ref_out: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 215.42/s (n=461) gold: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 170.95/s (n=359) orcish_default: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 129.22/s (n=283) orcish_ref_in: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 125.70/s (n=269) orcish_ref_in_ref_out: 3 wallclock secs ( 2.33 usr + 0.00 sys = 2.33 CPU) @ 115.88/s (n=270) orcish_ref_out: 2 wallclock secs ( 2.24 usr + 0.00 sys = 2.24 CPU) @ 126.34/s (n=283) plain_default: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 68.00/s (n=136) plain_ref_in: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 66.82/s (n=143) plain_ref_in_ref_out: 2 wallclock secs ( 2.03 usr + 0.00 sys = 2.03 CPU) @ 67.00/s (n=136) plain_ref_out: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 68.04/s (n=149) 1..2 Name "main::bench" used only once: possible typo at t/name.t line 1. ok 1 - sort name export ok 2 - sort number Name "main::bench" used only once: possible typo at t/numbers.t line 1. Use of uninitialized value $_[0] in pattern match (m//) at /usr/local/lib/perl/5.14.2/Sort/Key.pm line 84. unknown key type '' at t/common.pm line 318 unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. Sorting 100 elements of 'ref_in varying - max length' Benchmark: running GRT_ref_in, gold for at least 2 CPU seconds... GRT_ref_in: 1 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 1757.42/s (n=3673) gold: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 1642.79/s (n=3417) unsupported argument, type: ref_in, ref(code): at t/common.pm line 312. Sorting 100 elements of 'ref_in varying descending - max length' Benchmark: running GRT_ref_in, gold for at least 2 CPU seconds... GRT_ref_in: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 1574.65/s (n=3417) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 1680.28/s (n=3579) Name "main::bench" used only once: possible typo at t/regex.t line 1. Sorting 100 elements of 'regex string' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 2912.44/s (n=6320) SK: 2 wallclock secs ( 2.24 usr + 0.00 sys = 2.24 CPU) @ 5038.84/s (n=11287) ST: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @ 2074.50/s (n=4149) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 679.81/s (n=1448) orcish: 3 wallclock secs ( 2.20 usr + 0.00 sys = 2.20 CPU) @ 1827.73/s (n=4021) plain: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 594.88/s (n=1279) unsupported argument, type: string, ref(code): Regexp at t/common.pm line 312. Sorting 100 elements of 'qr string' Benchmark: running GRT, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2872.38/s (n=6032) ST: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 2026.54/s (n=4276) gold: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 721.00/s (n=1579) orcish: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 1771.36/s (n=3773) plain: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 589.86/s (n=1280) Name "main::bench" used only once: possible typo at t/simple.t line 1. Sorting 100 elements of 'simple string' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 3832.20/s (n=7856) SK: 2 wallclock secs ( 2.24 usr + 0.00 sys = 2.24 CPU) @ 7383.93/s (n=16540) ST: 2 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 2553.92/s (n=5210) gold: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 2787.80/s (n=5715) orcish: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 4068.10/s (n=8543) plain: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 1199.52/s (n=2495) Sorting 100 elements of 'simple number' Benchmark: running GRT, SK, ST, gold, orcish, plain for at least 2 CPU seconds... GRT: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 3469.67/s (n=7321) SK: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 11985.05/s (n=25648) ST: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 3239.37/s (n=7159) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2929.25/s (n=6210) orcish: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 3992.06/s (n=8543) plain: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 1161.43/s (n=2439) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple string' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 3621.10/s (n=7894) GRT_string: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 3741.23/s (n=7894) SK_index: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 7073.73/s (n=15350) gold: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 2575.74/s (n=5203) Sorting 1000 elements of 'simple string' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 337.14/s (n=708) GRT_string: 2 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ 349.03/s (n=719) SK_index: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 571.50/s (n=1223) gold: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 165.42/s (n=354) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple string no-case' Benchmark: running GRT_index, GRT_string, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 3956.46/s (n=8269) GRT_string: 3 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 4029.72/s (n=8543) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2197.17/s (n=4658) Sorting 1000 elements of 'simple string no-case' Benchmark: running GRT_index, GRT_string, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 340.85/s (n=726) GRT_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 370.89/s (n=790) gold: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 138.43/s (n=299) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple string descending' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 3 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2724.88/s (n=5804) GRT_string: 2 wallclock secs ( 2.02 usr + 0.00 sys = 2.02 CPU) @ 2820.79/s (n=5698) SK_index: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 7106.02/s (n=15349) gold: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 2658.14/s (n=5715) Sorting 1000 elements of 'simple string descending' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 265.40/s (n=560) GRT_string: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 267.46/s (n=559) SK_index: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 569.63/s (n=1219) gold: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 164.65/s (n=354) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple string no-case descending' Benchmark: running GRT_index, GRT_string, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 2708.53/s (n=5715) GRT_string: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 2724.88/s (n=5804) gold: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 2218.10/s (n=4658) Sorting 1000 elements of 'simple string no-case descending' Benchmark: running GRT_index, GRT_string, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.21 usr + 0.00 sys = 2.21 CPU) @ 253.39/s (n=560) GRT_string: 3 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 263.16/s (n=550) gold: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @ 139.05/s (n=292) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'simple number' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.26 usr + 0.00 sys = 2.26 CPU) @ 3393.81/s (n=7670) GRT_string: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 3393.36/s (n=7160) SK_index: 2 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 8555.50/s (n=18651) gold: 2 wallclock secs ( 2.12 usr + 0.00 sys = 2.12 CPU) @ 2695.75/s (n=5715) Sorting 1000 elements of 'simple number' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 323.96/s (n=703) GRT_string: 3 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 313.08/s (n=670) SK_index: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 752.58/s (n=1603) gold: 2 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ 173.43/s (n=359) unsupported argument, type: string_data, ref(code): at t/common.pm line 312. Sorting 100 elements of 'string:number' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 936.92/s (n=2005) GRT_string: 2 wallclock secs ( 2.19 usr + 0.00 sys = 2.19 CPU) @ 940.64/s (n=2060) SK_index: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 3110.65/s (n=6719) gold: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 633.17/s (n=1298) Sorting 1000 elements of 'string:number' Benchmark: running GRT_index, GRT_string, SK_index, gold for at least 2 CPU seconds... GRT_index: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 90.91/s (n=190) GRT_string: 2 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 90.91/s (n=190) SK_index: 2 wallclock secs ( 2.23 usr + 0.00 sys = 2.23 CPU) @ 273.54/s (n=610) gold: 2 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 31.92/s (n=68)
-- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/