Ryan Bloom wrote:

On Saturday 08 September 2001 11:29, Brian Pane wrote:

Ryan Bloom wrote:

On Friday 07 September 2001 14:23, Brian Pane wrote:

The attached patches change the apr_table_t implementation from
a linear list to a hash table (not an apr_hash_t, though!).  With
this change, I'm seeing a ~3% improvement in throughput when
delivering a 0-byte file over the loopback on Linux.  (I used this
0-byte test case to measure the inherent overhead in the httpd, without
transmission time clouding the results.)

I dislike this. Why are we putting a second hash table into APR? If we
want to use a hash, then ues an apr_hash_t. If apr_hash_t doesn't
support something that we MUST have to do this, then fix apr_hash_t. Having two different hash alorithms in APR, one of them hidden under a
tables API, seems kind of hackish to me.


Are you arguing in favor of using apr_hash_t in the implementation of
apr_table_t,
or using apr_hash_t in place of apr_table_t in the request_rec?  I'm
comfortable
with the former, but not the latter.


The latter. Having two API's to the same functions should only be done as a stop-gap.

I disagree.  It's inevitable to have two APIs, as long as we have two
'table' types with very different semantics.

apr_table_t is statically typed (uses char*), and apr_hash_t isn't (uses void*).
If we did a direct replacement of apr_table_t with apr_hash_t in the httpd,
we'd be sacrificing static type-safety for a lot of code.


 Also, a LOT of modules using the apr_table_elem macro
to get the elements from a table.  Turning that into an API would break a
lot of people.

My patch covers all the changes needed for the core modules.  Do you have
any info on the number of 3rd-party modules for 2.0 that use apr_table_elem?

--Brian




Reply via email to