as per public request, this is a list of smaller changes made on the
performance branch. Each revision can be reviewed (hopefully)
without further context and be merged into trunk independently.
Limit the amount of unused memory kept in apr_pools
to the same amount as everywhere else, e.g. SVN.exe main().
(1) uniform handling of memory pools
(2) Without this change, apr pools will fragment indefinitely (?)
for strings (e.g. fulltexts) and other chunks larger than 80kB.
This already happens on trunk if memcached usage has been
Reduce the number of revprop lookups during export and
checkout by caching rev,author,timestamp triples locally in
the report generation code.
(1) Reduce I/O overhead, especially for pre-1.7 repos
(2) Ensures consistent reports even if revprops get changed
by concurrent accesses
Minimize the number of retry attempts when looking for an
unused temporary file name.
Some functions (e.g. svn export) request temp file names without
any randomized sub-string in it, thus retries may take longer and
longer. This seems to hurt SVN developers more often than
ordinary users (process gets killed more frequently) but it also
makes the client less sensitive to cluttered TEMP folders etc.
Eliminate OS overhead for determining the default permissions for
Significant reduction in sys / OS overhead in svn export.
Reduce the calling overhead for svn I/O functions by inlining the
APR result -> svn_error_t conversion wrapper.
A very simple change that reduces the costs of our deep
Just another temp file name handling improvement: Use the already
properly encoded file name information from the APR file instead
of constructing it.
Further reduction of the client-side overhead in svn export
(and possibly others).
A somewhat larger change: Reduce the ra_svn de-marshalling
overhead mainly by pre-allocating sufficient container capacity
in various places.
In LAN environments, the data processing on the client becomes
a bottleneck for faster servers.
An even larger change: Speed up file translation by further optimizing
the search for "interesting chars" and replacing EOLs only if they
have actually changed (allowing for larger chunks of data per write
Apart from the physical I/O and the MD5 translation, this is the
most CPU-demanding part of an svn export. This patch more than
doubles its performance. It should also speed up svn checkout by
the same amount (not factor) of time.
Ignore files generated by MS VisualStudio 2010.
Dev usability improvement. No functional changes.
Received on 2010-09-19 21:59:29 CEST