* [PATCH] Optimize regexp build by Group Mail Splitting
@ 2013-12-28 3:53 Daniel Dehennin
2014-02-01 0:17 ` Lars Ingebrigtsen
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Dehennin @ 2013-12-28 3:53 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 3197 bytes --]
Hello,
Here is a patch[1] to optimize the regexps build by Group Mail
Splitting.
It's a little bit slower, as said in my tag message a 100 run benchmark
on 44 mail groups managed by Group Mail Splitting result in:
- master: Elapsed time: 2.205961s (0.792951s in 9 GCs)
- master+patch: Elapsed time: 2.547914s (1.069562s in 12 GCs)
Regards.
The following changes since commit 934f25f8d8801afe315722fd0b0b4ea14bcb1534:
Make split tracing work in nnimap groups, too (2013-12-26 17:39:39 +0100)
are available in the git repository at:
git://git.baby-gnu.net/gnus.git tags/feature/use-regexp-opt-in-gnus-group-split-fancy
for you to fetch changes up to 116ef38c9c0264d2f91b415d27bdece99118bd47:
Optimize regexp build by Group Mail Splitting (2013-12-28 04:33:56 +0100)
----------------------------------------------------------------
Use “regexp-opt” instead of building alternatives.
A 100 run benchmark on 44 mail groups managed by Group Mail Splitting
result in:
- master: Elapsed time: 2.205961s (0.792951s in 9 GCs)
- master+patch: Elapsed time: 2.547914s (1.069562s in 12 GCs)
----------------------------------------------------------------
Daniel Dehennin (1):
Optimize regexp build by Group Mail Splitting
lisp/gnus-mlspl.el | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el
index 3947c67..5769dad 100644
--- a/lisp/gnus-mlspl.el
+++ b/lisp/gnus-mlspl.el
@@ -179,22 +179,22 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
(split-regexp (cdr (assoc 'split-regexp params)))
(split-exclude (cdr (assoc 'split-exclude params))))
(when (or to-address to-list extra-aliases split-regexp)
- ;; regexp-quote to-address, to-list and extra-aliases
- ;; and add them all to split-regexp
+ ;; regexp-opt to-address, to-list and extra-aliases
+ ;; and append split-regexp to the compiled regexp
(setq split-regexp
(concat
"\\("
- (mapconcat
- 'identity
- (append
- (and to-address (list (regexp-quote to-address)))
- (and to-list (list (regexp-quote to-list)))
- (and extra-aliases
- (if (listp extra-aliases)
- (mapcar 'regexp-quote extra-aliases)
- (list extra-aliases)))
- (and split-regexp (list split-regexp)))
- "\\|")
+ (regexp-opt
+ (remove nil
+ (append
+ (list
+ to-address
+ to-list)
+ (if (listp extra-aliases)
+ extra-aliases
+ (list extra-aliases)))))
+ (if split-regexp
+ (concat "\\|" split-regexp))
"\\)"))
;; Now create the new SPLIT
(push (append
Footnotes:
[1] http://git.baby-gnu.net/gitweb/gitweb.cgi?p=gnus.git;a=tag;h=refs/tags/feature/use-regexp-opt-in-gnus-group-split-fancy
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Optimize regexp build by Group Mail Splitting
2013-12-28 3:53 [PATCH] Optimize regexp build by Group Mail Splitting Daniel Dehennin
@ 2014-02-01 0:17 ` Lars Ingebrigtsen
2014-02-01 13:07 ` Daniel Dehennin
0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2014-02-01 0:17 UTC (permalink / raw)
To: ding
Daniel Dehennin <daniel.dehennin@baby-gnu.org> writes:
> Here is a patch[1] to optimize the regexps build by Group Mail
> Splitting.
>
> It's a little bit slower, as said in my tag message a 100 run benchmark
> on 44 mail groups managed by Group Mail Splitting result in:
>
> - master: Elapsed time: 2.205961s (0.792951s in 9 GCs)
>
> - master+patch: Elapsed time: 2.547914s (1.069562s in 12 GCs)
Hm... I'm not quite sure I understand the patch.
> (setq split-regexp
> (concat
> "\\("
> - (mapconcat
> - 'identity
[...]
> + (regexp-opt
> + (remove nil
> + (append
> + (list
So it basically just uses `regexp-opt' instead of making the regexp
itself "manually"? But the result is significantly slower, and the code
doesn't seem to be shorter?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Optimize regexp build by Group Mail Splitting
2014-02-01 0:17 ` Lars Ingebrigtsen
@ 2014-02-01 13:07 ` Daniel Dehennin
0 siblings, 0 replies; 3+ messages in thread
From: Daniel Dehennin @ 2014-02-01 13:07 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 624 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
[...]
> So it basically just uses `regexp-opt' instead of making the regexp
> itself "manually"? But the result is significantly slower, and the code
> doesn't seem to be shorter?
Right, but I abandoned this patch, I'll avoid the duplication between
“to-list” and “to-address” in another way in my rework of
“feature/group-mail-splitting-on-list-headers”.
Using “manual” alternative make the “nnmail-split-fancy” easier to read.
Regards.
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-02-01 13:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-28 3:53 [PATCH] Optimize regexp build by Group Mail Splitting Daniel Dehennin
2014-02-01 0:17 ` Lars Ingebrigtsen
2014-02-01 13:07 ` Daniel Dehennin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).