From 8d4e74b110be9be6e6963ea33d35b9b8c5b97dd6 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Tue, 7 Nov 2006 09:52:05 +0000 Subject: pre-compute part of the qf in case of multitag => around 25% speedup for file search and 10% speedup for requires search --- urpmf | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'urpmf') diff --git a/urpmf b/urpmf index 8ef91697..4dbbeb54 100755 --- a/urpmf +++ b/urpmf @@ -132,12 +132,18 @@ my $sprintfargs = join(', ', map { } elsif ($multitags{$_}) { $multitag and $urpm->{fatal}->(1, N("Incorrect format: you may use only one multi-valued tag")); $multitag = $_; - '$mt'; + "'%s'"; } else { '$pkg->' . $_; } } $qf =~ /%[-\d]*(\w+)/g); +my ($proto_cooked, $sprintfargs_cooked); +if ($multitag) { + ($proto_cooked, $sprintfargs_cooked) = ($proto, $sprintfargs); + ($proto, $sprintfargs) = ('$proto_cooked', '$mt'); +} + my $next_st = $multitag ? 'next' : 'return 1'; my @inner = ( "my \$s = sprintf(qq{$proto}, $sprintfargs);", @@ -148,6 +154,7 @@ my @inner = ( if ($multitag) { @inner = ( + "my \$proto_cooked = sprintf(qq{$proto_cooked}, $sprintfargs_cooked);", "foreach my \$mt (\$pkg->$multitag) {", (map { " $_" } @inner), "}", -- cgit v1.2.1