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:
I dislike this. Why are we putting a second hash table into APR? If weThe 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.)
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
