Re: Have maps (was Merkle, URLs, etc)
"Joseph Ashwood" <[email protected]> Thu, 17 Mar 2005 05:26:19 -0800
| Newsgroups | gmane.network.bit-torrent.general |
|---|---|
| Message-ID | <[email protected]> |
A few addendums before I forget.
There are more optimum ways of representing the head than what I had
suggested earlier. The first efficient one that comes to adds a byte, the
upper 4 bits of the new byte are the length in bytes of nodeSize, the second
4-bits the size of numChildren in bytes. This increases the maximum size to
2^128, and in the average case will probably keep both in 16-bits. This
means the same structure can be maintained for filesizes up to 2^256 bytes.
The numChildren varies in one other case that I believe should be clearly
allowable. In the case of multi-file torrents an n-ary design with arbitrary
numbers of children in the root allows the multi-file torrent to share data
space with the single-file torrents, and by relation multi-file torrents to
share data space with each, assuming the two torrents share at least one
file.
There is an additional case where numChildren*headsize <> nodesize. Although
I didn't implement for it, it is entirely possible to have an edge node
include data after the child heads, this can be used to increase node space
efficiency, at the cost of design complexity, or to avoid having a last tiny
child. As for how to deal with this, since the file data comes after the
child node heads, the file data in the node comes _after_ the data from the
children. Not sure how beneficial this is for actual circumstances since the
number of internal nodes is generally rather low, but the efficiency metric
I introduced before will move to 100% for all node sizes, with a
corresponding slight decrease in total overhead. I don't think it's worth
doing, the benefits are too small, and the added complexity can become quite
large in creation, so it is unlikely to be used much, and prone to improper
implementation.
Joe
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/BitTorrent/
<*> To unsubscribe from this group, send an email to:
[email protected]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/