[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[TSVN] Yet another commit dialog perf patch

From: Will Dean <svn_at_indcomp.co.uk>
Date: 2004-12-20 16:41:01 CET

Guys,

This is another patch, primarily for the status list control, (and its users).

I've done four main things, plus a load of small stuff:

1. Started refactoring GetStatus - This was only an attempt to make it
easier to understand, but straight away this gave a perf improvement with
unversioned folders, because some common filename manipulation code moved
outside a loop.

2. Changed the main status array to be an STL vector (to allow the next
item...)

3. Radically altered the way that the search for case-mismatches is
done. I now partition the status array into versioned and unversioned
files (STL partitioning just moves things around in the vector). I then
sort the versioned section of the vector, so that I can do fast lookups in
it. The per-file check for case-mismatches now does a binary search
within the sorted section of the status array. This whole business is (at
least on my machines/test sets) vastly faster at locating the problem items.

4. Moved the functionality of CheckAll() into Show(). This avoids having
to pass through every list item twice when initially loading the
list. CheckAll also did a second column width check, which is *INCREDIBLY*
slow (2.5 seconds on 30000 items) (probably does a get-text-extents on
every string). I know that Stefan found that column-width checking was a
significant slow-down in the commit-progress dialog.

Cheers,

Will

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org

Received on Mon Dec 20 16:41:58 2004

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.