I'm working on a toy IRC bot. Much of the logic involved is translating the incoming raw IRC string into something that makes sense (so now I have two problems, etc). But I managed to cook up a regex that so far seems to work well. Time for callgrind!

Grouped by source file, most time is spent in regex.d (as would seem natural) but more time is spent in gc.d than I would have expected. Looking at the callgraph I see that there's a curious amount of calls to _d_arrayliteralTX from (around) where the regex matching is done. (There's some inlining going on.)

Example:   http://dpaste.dzfl.pl/3932a231 (needs dmd head)

Callgraph: http://i.imgur.com/AZEutCE.png

TL;DR: 67 regex matches are done in that example snippet, on real but (hopefully) anonymized raw irc strings; _d_arrayliteralTX sees 800+ calls.

Is this working as expected? Or am I doing it wrong?


(In one of the instances currently running the figures are 2_162 and 111_708, or a ratio of not quite 1:52.)

Reply via email to