On Thu, Jan 24, 2002 at 06:45:03PM -0800, Daniel A. Koepke wrote: > To be honest, the standard STL implementation of std::bitset<N> is > considerably better optimized than your bitvect class. You're doing a lot > of unnecessary copying[1] and have a ton of space overhead. This is not > even accounting for the one-word bit set specialization. In addition, > system headers can often take advantage of knowing how the compiler > optimizes things or what architecture you're on, and provide more > efficient implementations than you would want to by hand (e.g., it might > implement some copies in assembly). > > A good, easy start to optimizing your code would be to go through and use > const references as arguments in functions where a local copy is not > necessary. E.g., instead of your, > > inline bitvect operator |(bitvect a, bitvect b) > { . . . } > > we do, > > inline bitvect operator |(const bitvect& a, const bitvect& b) > { . . . } > > which saves two copies (meaning, two calls to the copy constructor, which > is probably a loop over an assignment to bitvect::vector[] elements). Amusingly, I already went through the code and did this last week. I also marked __attribute((__const__)) on all the functions where it's true, and fixed my sysdep stuff to make __attribute(foo) disappear if you're not compiling under GCC. > Your other goals, however, are not so easily deflected, and bitvect still > wins out if you're truly wishing to remain as close as possible to stock > CircleMUD. Indeed. -- Elie Rosenblum That is not dead which can eternal lie, http://www.cosanostra.net And with strange aeons even death may die. Admin / Mercenary / System Programmer - _The Necronomicon_ -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT