#!/usr/bin/perl use strict; use warnings; # vim=:SetNumberAndWidth ################################################################################ use Benchmark qw(:all); our @words; my $count=@ARGV?$ARGV[0]:50000; my $str=q( ); sub getss1() { local $_ = $str; my $start = 1+index $_, q("); my $end = index $_, q("), $start; $_ = substr $_, $start, $end; } use String::Index qw(cindex ncindex); sub getss2() { local $_ = $str; my $start = 1+cindex $_, q("); my $end = cindex $_, q("), $start; $_ = substr $_, $start, $end; } sub getss3() { @words = split q( ),$str; local $_ = $words[1]; $_ = $words[1]; my $start = 1+index $_, q("); my $end = index $_, q("), $start; $_ = substr $_, $start, $end; } sub getsub1() { local $_ = $str; s/^[^"]*"([^"]+)".*$/$1/; $_; } sub getsub2() { local $_ = $str; m{^[^"]*"([^"]+)".*$}; $1; } cmpthese($count, { 'ss1' => 'getss1', 'ss2' => 'getss2', 'ss3' => 'getss3', 'sub1' => 'getsub1', 'sub2' => 'getsub2', }); # vim: ts=2 sw=2 ai number