Dear Ned, This should have been sent to gentoo-portage-dev@ rather than gentoo-dev@, but that is easy to rectify. I am CCing gentoo-portage-dev@.
That being said, nice job. I think everyone on gentoo-dev@ will
appreciate your work on this.
Yours truly,
Richard Yao
On 10/18/2013 12:46 PM, Neil Cahill wrote:
> I profiled an execution of "emerge -pv sed" to look for easy ways to increase
> the speed of that command. The following 2-line patch gives a 2% reduced run
> time. The profile showed that regex matching accounts for 8.3% of the run
> time, so these updated regular expressions are at least 25% quicker. I hoped
> it would help more but it should all add up.
>
> As I get more time I may look to submit other small improvements.
>
> As for how the patch works, the version number part of a package name has
> many options so that part of the regular expression is time consuming. It
> was advantageous to use an assertion to visit that part of the expression
> less often. Python since 2.4 supports what I've used so this should work on
> all current versions.
>
> Thank you.
> Neil Cahill.
>
> ### patch ###
> --- pym/portage/versions.py 2013-09-23 21:59:21.000000000 +0100
> +++ pym/portage/versions.py 2013-10-08 14:48:11.178441337 +0100
> @@ -45,8 +45,8 @@
> # It must not begin with a hyphen,
> # and must not end in a hyphen followed by one or more digits.
> _pkg = {
> - "dots_disallowed_in_PN": r'[\w+][\w+-]*?',
> - "dots_allowed_in_PN": r'[\w+][\w+.-]*?',
> + "dots_disallowed_in_PN": r'[\w+][\w+-]*?(?![\w+])',
> + "dots_allowed_in_PN": r'[\w+][\w+.-]*?(?![\w+.])',
> }
>
> _v = r'(cvs\.)?(\d+)((\.\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\d*)*)'
> ### end patch ###
>
signature.asc
Description: OpenPGP digital signature
