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