apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pane <bp...@pacbell.net>
Subject [PATCH] performance fix for time offset computation
Date Tue, 28 Aug 2001 10:26:42 GMT
On platforms where neither HAVE_GMTOFF nor HAVE___OFFSET is defined,
like Solaris, the function "get_offset" in apr/time/unix/time.c is a
bottleneck in time formatting.

On these platforms, get_offset ignores its argument; it really computes
the server's offset from GMT, normalized so that it's independent of
daylight savings.

The following patch caches the offset after it's first computed, so
that we don't have to compute it repeatedly.

--Brian

Index: apr/time/unix/time.c
===================================================================
RCS file: /home/cvspublic/apr/time/unix/time.c,v
retrieving revision 1.51
diff -r1.51 time.c
88,89c88,92
<     {
<         time_t t1 = time(0), t2 = 0;
---
 >     static apr_int32_t cached_offset = 100;
 >
 >     if (cached_offset == 100) {
 >         struct timeval now;
 >         time_t t1, t2;
92a96,99
 >         gettimeofday(&now, NULL);
 >         t1 = now.tv_sec;
 >         t2 = 0;
 >
101c108
<         return (apr_int32_t) difftime(t1, t2) + (was_dst ? 3600 : 0);
---
 >         cached_offset = (apr_int32_t) difftime(t1, t2) + (was_dst ? 
3600 : 0);
102a110
 >     return cached_offset;



Mime
View raw message