[reSIProcate] optimization of Data and Contents classes
Kennard White
kennard_white at logitech.com
Mon Feb 7 19:00:57 CST 2011
Hi,
I came across this comment in the source code:
// !bwc! This causes an additional copy; sure would be nice to have a
way
// to get a data to take on a buffer with Data::Share _after_
construction
One thing led to another, and I've added a number of methods to the Data
class to enable different forms of sharing after construction. Please see
attached patch. I hope to commit on Friday.
These changes support writing code with fewer memory allocations and copies.
I'd like to may a few other changes related to Data, but need some input:
1. Remove the template<int S> struct DataLocalSize and just replace its
usage with simple int. It seems like this is a holdover from when the whole
class was templated. But I don't claim to fully understand templates -- is
something more complex going on?
2. I'd to replace class PreallocateType within an enum. Goal here is to get
rid of static data Data::Preallocate, since this show up within gdb dump of
every Data object, and make classes like SipMessage nearly unreadable. Is
there some reason the pre-allocating constructor was declared with a
structure disambiguating argument rather than an enum? Is it because of
potential automatic conversion between ints and enum?
3. Related to cleaning up static data members, I'd like to move Data::Empty
to DataHelper::Empty. This would impact a lot of code, and unfortunately I'm
guessing a lot of application code. Is this too big of a change to consider?
4. And again related to cleaning up static data members, I'd like to move
Data::npos to to DataHelper::npos. I'm guessing this has limited impact, but
still has potential to break application code. Thoughts?
Thanks,
Kennard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20110207/44115da8/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: resip-data1.patch
Type: application/octet-stream
Size: 17041 bytes
Desc: not available
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20110207/44115da8/attachment.obj>
More information about the resiprocate-devel
mailing list