You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/09/27 14:55:54 UTC
svn propchange: r1390435 - svn:log
Author: stefan2
Revision: 1390435
Modified property: svn:log
Modified: svn:log at Thu Sep 27 12:55:54 2012
------------------------------------------------------------------------------
--- svn:log (original)
+++ svn:log Thu Sep 27 12:55:54 2012
@@ -1,5 +1,85 @@
Merge first batch of changes from the 10Gb branch. These are all
internal optimizations, i.e. no UI or public API changes.
-Revisions 1388394,1388636,1388639,1388643-1388644,1388654,1388720,
-1388789,1388795,1388801,1388805,1388810,1389276,1390407
+This comprises the following change sets:
+
+* Make membuffer cache keep more of the "important" objects.
+ The /trunk code has flaws and inefficiencies that prevent
+ the cache from keeping as much data as it could.
+
+ [subversion/libsvn_subr/cache-membuffer.c]
+ r1388810: improve cache retention rate in overload situations.
+ r1390407: fix a membuffer cache effectiveness issue. The
+ lower part of the group index was always identical
+ to the cache segment index. I.e. most groups would
+ not be used at all causing the used ones to overflow
+ quickly.
+
+* Add a 1st level cache for DAG nodes that can just hand out
+ the nodes without the need to (de-)serialize, copy or sync data.
+
+ The actual implementation can be found here:
+
+ [subversion/libsvn_fs_fs/fs.h
+ subversion/libsvn_fs_fs/tree.h
+ subversion/libsvn_fs_fs/caching.c
+ subversion/libsvn_fs_fs/tree.c]
+ r1388654: Implement a 1st level cache for DAG nodes as they are
+ the most frequently accessed data object in FSFS.
+ Also, access to them tends to have high locality.
+ r1388801: Make 1st level DAG node cache more effective. We may
+ attempt lookups with *any* non-empty path.
+
+ Supporting changes and additions:
+
+ [subversion/tests/libsvn_fs/fs-test.c
+ subversion/include/private/svn_fs_util.h
+ subversion/libsvn_fs_util/fs-util.c
+ subversion/libsvn_fs_fs/tree.c]
+ r1388636: Fix a pool usage issue in fs-test.
+ r1388644: Introduce a new utility method that determines whether
+ svn_fs__canonicalize_abspath must be called for a given
+ path.
+ r1389276: prevent unnecessary canonicalization.
+
+* Checkout, export and update often send deltas against empty bases.
+ Provide an optimized implementation for that case and invoke it
+ from the generic window_handler().
+
+ [subversion/libsvn_delta/svndiff.c]
+ r1388394: provide optimized version of window_handler for the
+ frequent case of an empty source window.
+ r1388805: make the optimized code path for deltas against empty
+ source stream handle all headers and write them with a
+ single call to the output stream.
+
+* Speed up the reporting of properties in similar cases.
+
+ [subversion/libsvn_repos/reporter.c]
+ r1388795: When reporting changed properties against an empty
+ source or a source with no properties, there is no
+ need for calculating a diff between both lists.
+ Also, reduce general computational overhead.
+
+* Speed up cache access by using fixed-size keys.
+
+ [subversion/libsvn_fs_fs/fs.h
+ subversion/libsvn_fs_fs/caching.c
+ subversion/libsvn_fs_fs/fs_fs.c]
+ r1388720: instead of variable length keys use fixed length structs
+ as keys for the revprop and fulltext caches. Those keys
+ don't require intermediate strings to be constructed and
+ are faster to process on the cache side.
+
+* Introduce a node property cache (similar to any other cache
+ in FSFS).
+
+ [subversion/libsvn_fs_fs/fs.h
+ subversion/libsvn_fs_fs/caching.c
+ subversion/libsvn_fs_fs/fs_fs.c]
+ r1388789: Cache node properties in their parsed state instead
+ of just the plain full-text. temp_(de-)serialization
+ is much faster then parsing from a generic stream.
+
+* [subversion/libsvn_fs_fs/fs_fs.c]
+ r1388639: minor optimization.