This is an automated email from the git hooks/post-receive script. nthykier pushed a commit to branch master in repository lintian.
commit c363511e00be78b14ac196eaedaed6b4eb979a5d Author: Niels Thykier <ni...@thykier.net> Date: Sun Feb 16 14:22:57 2014 +0100 L::Util: Use hack to optimise {,r}strip It is "well-known" that the expression s/^\s++|\s++$/g is slower than splitting the expression into to separate ones (namely, s/^\s++// and s/\s++$//)[1]. During profiling, it turns out that the s/\s++$// part is the slowest part. This can "fortunately" be replaced by the completely unreadable alternative "unpack('A*', $string)", which sadly appears to be at least a factor 10 better than s/\s++$//. Kudos to Ansgar Burchardt for the suggestion of using unpack. [1] http://www.perlmonks.org/?node_id=865344 Signed-off-by: Niels Thykier <ni...@thykier.net> --- lib/Lintian/Util.pm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/Lintian/Util.pm b/lib/Lintian/Util.pm index 7eed1b3..10cf506 100644 --- a/lib/Lintian/Util.pm +++ b/lib/Lintian/Util.pm @@ -1105,10 +1105,12 @@ sub strip (_) { ## no critic (Subroutines::RequireFinalReturn) if (defined wantarray) { # perl 5.14 s///r would have been useful here. my ($arg) = @_; - $arg =~ s/^\s++|\s++$//g; - return $arg; + $arg =~ s/^\s++//; + # unpack 'A*' is faster than s/\s++$// + return unpack('A*', $arg); } - $_[0] =~ s/^\s++|\s++$//g; + $_[0] =~ s/^\s++//; + $_[0] = unpack('A*', $_[0]); # void context, so no return needed here. } @@ -1127,12 +1129,10 @@ sub lstrip (_) { ## no critic (Subroutines::RequireFinalReturn) # prototype for default to $_ sub rstrip (_) { ## no critic (Subroutines::RequireFinalReturn) if (defined wantarray) { - # perl 5.14 s///r would have been useful here. - my ($arg) = @_; - $arg =~ s/\s++$//g; - return $arg; + # unpack 'A*' is faster than s/\s++$// + return unpack('A*', $_[0]); } - $_[0] =~ s/\s++$//; + $_[0] = unpack('A*', $_[0]); # void context, so no return needed here. } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git -- To UNSUBSCRIBE, email to debian-lint-maint-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1wf1vj-0002lt...@moszumanska.debian.org