On 26 Oct 2010, at 8:52 PM, Jim Jagielski wrote:

Does this really help out? Certainly years ago bitfields made
sense but nowadays even K&R say to avoid them.

Plus, when we have bitfields "randomly" located in the struct,
padding becomes an issue. Plus, iirc, they are slow.

I'd be +1 for changing them to chars if we want to save
space.

Before changing these fields I went on an extended google session to find whether there was any specific reason they should be avoided, and I didn't find any (that isn't to say they don't exist).

I then looked for existing precedent for bitfields in the httpd code, and found this (from httpd-trunk, httpd-2.2):

httpd.h:    unsigned int clogging_input_filters:1;
httpd.h:    unsigned aborted:1;
http_core.h:    unsigned d_is_fnmatch : 1;
http_core.h: unsigned int allow_encoded_slashes : 1; /* URLs may contain %2f w/o being

These are pretty fundamental parts of the httpd core, and if bitfields are a problem, we are very likely to have run into problems before with these fields, surely?

The drive to optimise this in our particular case is a particular class of reverse proxy image filtering server that reverse proxies to 3500 separate locations (and counting). Every location involves a copy of the proxy config, 4 bytes for each "set" field, and that adds up to lots of ram not fitting into CPU caches. mod_cache's quick handler helps a lot in this case, but it's still not ideal.

Regards,
Graham
--

Reply via email to