why is there a need for 15 entries? if it's a multiprocess server then
there's only a need for 1 or 2 entries. if it's a multithreaded server
then you need to lock the cache (which you're not doing :)
isn't the real win in eliminating both the divisions required by the
explode time functions and the divisions required by the printf? fwiw,
tux does binary logging, and has an external tool to convert it to CLF...
and the spec committee accepted that. and tux also optimises the rfc822
Date header by updating a cached copy once per second
also -- you could eliminate the seconds = t / APR_USECS_PER_SEC
calculation (death to all divisions! especially the 64-bit ones)...
because this division already happens inside the explode function:
when you miss the cache and do a full explode, then subtract the resulting
tm_usec off the input time and you've got an apr_time_t which lands
exactly on a second boundary. use that as your cache key, and you can
then do ranged comparisons (t >= cache->t && t < cache->t +
APR_USECS_PER_SEC).
-dean