BIND 10 #538: Make isc::dns::Name reside in continuous block of memory.
BIND 10 Development
do-not-reply at isc.org
Wed Jan 26 21:03:07 UTC 2011
#538: Make isc::dns::Name reside in continuous block of memory.
-------------------------------------+-------------------------------------
Reporter: vorner | Owner:
Type: task | Status: new
Priority: minor | Milestone: A-Team-
Component: Unclassified | Sprint-20110209
Sensitive: 0 | Keywords:
Add Hours to Ticket: 0 | Estimated Number of Hours: 0
Total Hours: 0 | Billable?: 1
| Internal?: 0
-------------------------------------+-------------------------------------
We have a lot operations with Names in the code, comparing names takes 16%
of runtime, which is mostly caused by cache misses.
The amount of cache misses could be lowered by factor of at last 3 if the
whole Name and it's data resides in one continuous block of memory (it
will be either retrieved as a single cache line or at last predicted by
CPU prediction heuristics).
It can be accomplished for example by not using stl string and vector, but
C strings and arrays. The memory can be allocated before calling the
actual constructor, passing the pointer to memory both to new and using
pointer arithmetics on this pointer in constructor to place the actual
data behind it. The constructor should not be directly visible then and a
wrapper function would have to be used to hide this, possibly error-prone,
logic.
As this is quite a lot of work, we should try handling the easier tasks
first and see if it helps enough. Therefore I'm giving it a lower
priority.
--
Ticket URL: <https://bind10.isc.org/ticket/538>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list