![]() A big block chain is a linked list, and we pretty much need random access to them. This should theoretically make accessing a random point in the chain O(log2 n) instead of O(n) (with disk access scaling based on the size of the read/write, not its location). It theoretically takes O(n) memory based on the size, but it can do better if the chain isn't very fragmented (which I believe will generally be the case for long chains). It also involves fetching all the big block locations when we open the chain, but we already do that anyway (and it should be faster to read it all in one go than piecemeal). |
||
---|---|---|
.. | ||
tests | ||
Makefile.in | ||
antimoniker.c | ||
bindctx.c | ||
classmoniker.c | ||
clipboard.c | ||
comcat.c | ||
compobj.c | ||
compobj_private.h | ||
compositemoniker.c | ||
datacache.c | ||
dcom.idl | ||
defaulthandler.c | ||
dictionary.c | ||
dictionary.h | ||
drag_copy.cur | ||
drag_link.cur | ||
drag_move.cur | ||
enumx.c | ||
enumx.h | ||
errorinfo.c | ||
filemoniker.c | ||
ftmarshal.c | ||
git.c | ||
hglobalstream.c | ||
ifs.c | ||
irot.idl | ||
itemmoniker.c | ||
marshal.c | ||
memlockbytes.c | ||
moniker.c | ||
moniker.h | ||
nodrop.cur | ||
ole2.c | ||
ole2impl.c | ||
ole2stubs.c | ||
ole32.spec | ||
ole32_main.c | ||
ole32_objidl.idl | ||
ole32_oleidl.idl | ||
ole32_unknwn.idl | ||
ole32res.rc | ||
oleobj.c | ||
oleproxy.c | ||
olestd.h | ||
pointermoniker.c | ||
regsvr.c | ||
rpc.c | ||
stg_bigblockfile.c | ||
stg_prop.c | ||
stg_stream.c | ||
storage32.c | ||
storage32.h | ||
stubmanager.c | ||
usrmarshal.c |