FIFO, with the addition that one that's re-used, will be moved to the
beginning of the list, would (I think) greatly benefit the cache hit-rate.

Just my $0.02

Ron

"Derrell Lipman" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Ilia Alshanetsky <[EMAIL PROTECTED]> writes:
>
> > This is not a bug, but rather expected behavior. PCRE extension caches
> > compiled regular expressions so that subsequent runs of the same regex
do
> > not need to perform the compilation step. In your example you are
generating
> > new regex in an unterminated loop, so it's no surprise that PHP
eventually
> > exhausts the available memory and terminates.
>
> Since PHP never knows what the user might do or how long the application
might
> run for, perhaps the cache, a useful feature in this case, should have a
> maximum cache size.  If the maximum cache size is exceeded, the oldest
> (ideally) cached compiled regexp would be deleted from the cache.
>
> It's probably reasonable to keep only a very small number of compiled
regular
> expressions in cache.  Intuition, at least, tells me that if a regular
> expression isn't reused "soon" the compile time is likely not a big deal.
>
> I'm guessing that the regular expressions are maintained in such an order
that
> the requested one can be found quickly (via a hash?  binary search?).
Given
> my earlier assumption that only a small number really need be cached, they
> could instead be kept in FIFO order, and a simple linear search of the
(small)
> list done to see if the requested regexp is cached.  When it's not found,
the
> one at tail of the queue (assuming the queue is full) would be deleted to
make
> room for a new one which would be pushed onto the head of the queue.
>
> Since my assumption is based purely on intuition, is there any indication
from
> "real life" that in fact, keeping many regexps in the cache is truly
> beneficial?
>
> Cheers,
>
> Derrell

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to