diff options
author | Joey Hess <joey@kitenet.net> | 2010-11-16 13:19:13 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-11-16 13:19:13 -0400 |
commit | 9a7387a53be2b1e182003f3e86cb76d7f10c4b67 (patch) | |
tree | 0bc95c37adefca8574eaf71a9a8d03b304815a6b | |
parent | ab96249d5ad8f3ee9275be3fef9e3467b8f3ffdf (diff) |
thoughts
-rw-r--r-- | doc/todo/Improving_the_efficiency_of_match__95__glob.mdwn | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/todo/Improving_the_efficiency_of_match__95__glob.mdwn b/doc/todo/Improving_the_efficiency_of_match__95__glob.mdwn index 43571ead7..0fc059ad7 100644 --- a/doc/todo/Improving_the_efficiency_of_match__95__glob.mdwn +++ b/doc/todo/Improving_the_efficiency_of_match__95__glob.mdwn @@ -22,6 +22,23 @@ Here's my patch - please consider it! -- [[KathrynAndersen]] >>>>> I think it's because my patch focuses on match_glob while the memoize patch focuses on `glob2re`, and `glob2re` is called in `filecheck`, `meta` and `po` as well as in `match_glob` and `match_user`; thus the memoized `glob2re` is dealing with a bigger set of globs to look up, and thus could be just that little bit slower. -- [[KathrynAndersen]] +>>>>>> What may be going on is that glob2re is already a fairly fast +>>>>>> function, so the overhead of memoizing it with the very generic +>>>>>> `_memoizer` (see its source) swamps the memoization gain. Note +>>>>>> that the few functions memoized with the Memoizer before were much +>>>>>> more expensive, so that little overhead was acceptable then. +>>>>>> +>>>>>> It also may be that Kathryn's patch is slightly faster due to using +>>>>>> the construct `$foo =~ $regexp` rather than `$foo =~ /$regexp/` +>>>>>> (probably avoids a copy or something like that internally) -- +>>>>>> this despite checking both `exists` and `defined` on the hash, which +>>>>>> should be reundant AFAICS. +>>>>>> +>>>>>> My guess is that the best of both worlds would be to move +>>>>>> the byhand memoization to glob2re and have it return a compiled +>>>>>> `/^/i` regexp that can be used without further modifiction in most +>>>>>> cases. --[[Joey]] + -------------------------------------------------------------- Benchmarks done with Devel::Profile on the same testbed IkiWiki setup. I'm just showing the start of the profile output, since that's what's relevant. |