This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Slow regexps.


"Harvey J. Stein" <hjstein@bfr.co.il> writes:

 > I just looked over the regexp code (posix-regexp.c) & noticed the
 > following:
 > 
 > 1. It seems the SCM_* macros often expand to rather complicated
 >    expressions.  Consider SCM_ROCHARS(str) in regex-posix.c.  You have
 >    a test, posibly an addition & a few indirections.  In
 >    scm_regexp_exec, there are lots of them used, some of which are
 >    used over & over again.
 > 2. The return from regexec is packaged up as a vector (malloccing the
 >    vector, repeated use of SCM_MAKINUM & SCM_VELTS, etc) then the
 >    original space used is freed.
 > 
 > Wouldn't it help performance in general if:
 > 
 > 1. Repeated usages of these things were converted to variable
 >    assignments followed by repeated accesses of the variable instead,
 >    and
 > 2. In scm_regexp_exec in particular, wouldn't it help performance to
 >    package up the return from regexec as an opaque type with accessors
 >    for the components so that the vector doesn't have to be built each
 >    time?

I also meant to ask if anyone has profiled make-regexp & regexp-exec
to see if the above makes a measurable difference, or if the bulk of
the time is spent in the called rtns.

-- 
Harvey J. Stein
BFM Financial Research
hjstein@bfr.co.il