Re: a new proposal Re: Earth to APR????

2002-07-17 Thread Brian Pane
Ryan Bloom wrote:
I'll say it again.  Leave apr_time_t alone.  If a program wants 1 second
resolution, then they should be using time_t.  apr_time_t specifically
provides microsecond resolution.
That's not a valid solution.  Even apps that need only
1-second resolution end up having to work with apr_time_t
because APR uses it for things like file stat times and
apr_rfc822_date().  Not that those parts of APR have any
real need for microsecond resolution, either--but they
force the app to use microseconds anyay.
--Brian



RE: Earth to APR????

2002-07-16 Thread Ryan Bloom
++1!

Ryan

--
Ryan Bloom  [EMAIL PROTECTED]
645 Howard St.  [EMAIL PROTECTED]
San Francisco, CA 

 -Original Message-
 From: David Reid [mailto:[EMAIL PROTECTED]
 Sent: Monday, July 15, 2002 4:36 PM
 To: APR Dev List
 Subject: Earth to APR
 
 Can we all come down off the ceiling for a bit and get our feet back
on
 the
 ground?
 
 I can't help but wonder why we are making this whole thing so
complicated
 when people have been using computers and libraries using time quite
 happily
 for a number of years without getting as involved as this has gotten.
But
 then maybe I've borrowed some of Cliff's crack?
 
 BTW, this is getting embarrassing to watch - please can we bring this
to a
 head somehow?
 
 david
 
 




Re: Earth to APR????

2002-07-16 Thread Brian Pane
Do you have any specific solution in mind?
--Brian
David Reid wrote:
Can we all come down off the ceiling for a bit and get our feet back on the
ground?
I can't help but wonder why we are making this whole thing so complicated
when people have been using computers and libraries using time quite happily
for a number of years without getting as involved as this has gotten. But
then maybe I've borrowed some of Cliff's crack?
BTW, this is getting embarrassing to watch - please can we bring this to a
head somehow?
david
 





Re: Earth to APR????

2002-07-16 Thread Jim Jagielski
Cliff Woolley wrote:
 
 On Tue, 16 Jul 2002, David Reid wrote:
 
  BTW, this is getting embarrassing to watch - please can we bring this to a
  head somehow?
 
 Party pooper.  ;)
 

The devil's in the details :)

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
  A society that will trade a little liberty for a little order
 will lose both and deserve neither - T.Jefferson


a new proposal Re: Earth to APR????

2002-07-16 Thread Brian Pane
Actually, now that I think about it, I have a solution
in mind: we (APR) should get out of the business of
providing microsecond time manipulation.
Here's my rationale...
What added value can APR provide to applications that need
to work with time?
  - Getting the current time in a portable manner?  Yes.
  - Converting timestamps to date/time form in a portable
manner?  Yes.
  - Doing arithmetic on times?  Not really.  Every solution
we've found for representing a microsecond-resolution time
has a performance tradeoff somewhere: either in extracting
seconds (current apr_time_t), or in extracting microseconds
(busec representation), or in addition and subtraction
(struct representation).  Which of these operations can we
afford to make slower in order to speed up the other ops?
I don't know.  It depends on the application.
Based on these observations, I think it's important that APR
be able to provide a portable way to look up the current time
with microsecond resolution, but APR need not do all the rest
of its time operations in microseconds.
Here's a design that I think would be a reasonable compromise:
  - apr_time_t becomes a 64-bit uint representing seconds
since the epoch.  (Maybe it's typedef'ed to time_t.  Maybe
not.  Let's worry about that *after* we figure out the
desired semantics.)
  - apr_time_now() returns a time_t, but it also returns
the microseconds as a separate value for apps that need
them:
apr_status_t apr_time_now(apr_time_t *sec, apr_uint32_t *usec);
Note: We could also keep apr_time_now() unchanged and add a
different function that would provide seconds and microseconds.
There are pros and cons for both.
  - All the time-maniuplation functions that currently use
apr_time_t continue to use apr_time_t.  (As far as I can
tell, none of them really need microseconds.)
  - Interval times are expressed as an integer count of microseconds.
(We *might* want to let apr_poll() take an integer count of 
milliseconds
to avoid a division by 1,000, since poll is such an important special
case.)

With this model, we can add one more field to the httpd's request_rec
to hold the microseconds part of the request_time.  The httpd core won't
care about it, but custom modules that need more granular time (e.g., for
special-purpose logging or session ID generation) will have access to it.
Apps that need to work with microsecond resolution can choose their own
time representation, based on whatever is best suited to the needs of
the app: structure, binary microseconds, even convert to floating-point.
--Brian



Re: Earth to APR????

2002-07-16 Thread Brian Pane
William A. Rowe, Jr. wrote:
At 06:36 PM 7/15/2002, David Reid wrote:
Can we all come down off the ceiling for a bit and get our feet back 
on the
ground?

I can't help but wonder why we are making this whole thing so 
complicated
when people have been using computers and libraries using time quite 
happily
for a number of years without getting as involved as this has gotten. 
But
then maybe I've borrowed some of Cliff's crack?

BTW, this is getting embarrassing to watch - please can we bring this 
to a
head somehow?

Would my unequivocal veto of any change to apr_time_t help? 

Based on the data that we have so far, it wouldn't help.
The current apr_time_t implementation isn't adequate for
use in the httpd, based on the performance profile data
that shows the 64-bit divisions to be a bottleneck.
It would be nice to say, no problem, we'll just extract
the seconds right after we look up the request_time, and
we'll use the seconds value instead of the apr_time_t
for everything after that.  But that won't fix the
problem.  We deal with multiple timestamps in a typical
request, not just r-request_time, and they all incur
the 64-bit division costs.  (For example, we need to
format the mtime of the delivered file for use in the
last-modified header.  APR does a 64-bit multiplication
to pack the time into an apr_time_t, and the httpd then
has to do a 64-bit division to unpack the seconds field.)
--Brian



Re: Earth to APR????

2002-07-16 Thread Jim Jagielski
William A. Rowe, Jr. wrote:
 
 Would my unequivocal veto of any change to apr_time_t help?
 

I think the key point, IMO, is that we need to speed it up. If that
requires changes, so be it.

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
  A society that will trade a little liberty for a little order
 will lose both and deserve neither - T.Jefferson


RE: a new proposal Re: Earth to APR????

2002-07-16 Thread Ryan Bloom
I'll say it again.  Leave apr_time_t alone.  If a program wants 1 second
resolution, then they should be using time_t.  apr_time_t specifically
provides microsecond resolution.

Different solutions for different problems.   :-)

Ryan

--
Ryan Bloom  [EMAIL PROTECTED]
645 Howard St.  [EMAIL PROTECTED]
San Francisco, CA 

 -Original Message-
 From: Brian Pane [mailto:[EMAIL PROTECTED]
 Sent: Monday, July 15, 2002 5:35 PM
 To: APR Dev List
 Subject: a new proposal Re: Earth to APR
 
 Actually, now that I think about it, I have a solution
 in mind: we (APR) should get out of the business of
 providing microsecond time manipulation.
 
 Here's my rationale...
 
 What added value can APR provide to applications that need
 to work with time?
- Getting the current time in a portable manner?  Yes.
- Converting timestamps to date/time form in a portable
  manner?  Yes.
- Doing arithmetic on times?  Not really.  Every solution
  we've found for representing a microsecond-resolution time
  has a performance tradeoff somewhere: either in extracting
  seconds (current apr_time_t), or in extracting microseconds
  (busec representation), or in addition and subtraction
  (struct representation).  Which of these operations can we
  afford to make slower in order to speed up the other ops?
  I don't know.  It depends on the application.
 
 Based on these observations, I think it's important that APR
 be able to provide a portable way to look up the current time
 with microsecond resolution, but APR need not do all the rest
 of its time operations in microseconds.
 
 Here's a design that I think would be a reasonable compromise:
 
- apr_time_t becomes a 64-bit uint representing seconds
  since the epoch.  (Maybe it's typedef'ed to time_t.  Maybe
  not.  Let's worry about that *after* we figure out the
  desired semantics.)
 
- apr_time_now() returns a time_t, but it also returns
  the microseconds as a separate value for apps that need
  them:
  apr_status_t apr_time_now(apr_time_t *sec, apr_uint32_t
*usec);
  Note: We could also keep apr_time_now() unchanged and add a
  different function that would provide seconds and microseconds.
  There are pros and cons for both.
 
- All the time-maniuplation functions that currently use
  apr_time_t continue to use apr_time_t.  (As far as I can
  tell, none of them really need microseconds.)
 
- Interval times are expressed as an integer count of microseconds.
  (We *might* want to let apr_poll() take an integer count of
 milliseconds
  to avoid a division by 1,000, since poll is such an important
special
  case.)
 
 With this model, we can add one more field to the httpd's request_rec
 to hold the microseconds part of the request_time.  The httpd core
won't
 care about it, but custom modules that need more granular time (e.g.,
for
 special-purpose logging or session ID generation) will have access to
it.
 
 Apps that need to work with microsecond resolution can choose their
own
 time representation, based on whatever is best suited to the needs of
 the app: structure, binary microseconds, even convert to
floating-point.
 
 --Brian