Vincent Povirk : ole32: Store the location of all blocks in a big block chain in memory.

Alexandre Julliard julliard at winehq.org
Wed May 5 11:08:35 CDT 2010


Module: wine
Branch: master
Commit: 42550953a650e1ef166339fb4e2fdc06741ad5b8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=42550953a650e1ef166339fb4e2fdc06741ad5b8

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Tue May  4 15:15:41 2010 -0500

ole32: Store the location of all blocks in a big block chain in memory.

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).

---

 dlls/ole32/storage32.c |  271 ++++++++++++++++++++++++++++++------------------
 dlls/ole32/storage32.h |   13 ++-
 2 files changed, 180 insertions(+), 104 deletions(-)

Diff:   http://source.winehq.org/git/wine.git/?a=commitdiff;h=42550953a650e1ef166339fb4e2fdc06741ad5b8



More information about the wine-cvs mailing list