Details

    • Improvement
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • None
    • 0.11
    • jcr

    Description

      Currently oak-jcr does a lot of unnecessary work for various reasons. This is a major drag on performance.

      For example, a getString() call on an already acquired PropertyImpl instance (with no refresh() or other operations in between) requires 12 NodeBuilder.getProperty() calls to access that same property state over and over again.

      Attachments

        Issue Links

          Activity

            jukkaz Could you split this into sub task as they come up? This makes it easier for others to chime in.

            mduerig Michael DĂĽrig added a comment - jukkaz Could you split this into sub task as they come up? This makes it easier for others to chime in.
            jukkaz Jukka Zitting added a comment -

            Will do, especially for larger changes. There are some smaller improvements (like the isMultiple() change I did in revision 1452203) for which a separate issue is probably overkill.

            jukkaz Jukka Zitting added a comment - Will do, especially for larger changes. There are some smaller improvements (like the isMultiple() change I did in revision 1452203) for which a separate issue is probably overkill.

            OAK-672 should will most likely also have an impact here

            mduerig Michael DĂĽrig added a comment - OAK-672 should will most likely also have an impact here

            The resolution of OAK-690 improved raw read a bit further:

            # ReadPropertyTest     min     10%     50%     90%     max       N
            Jackrabbit               8       8       9      10     131    6623
            Oak-Default             22      22      23      24      42    2559
            Oak-Default (OAK-690)   15      15      16      17      43    3654 
            
            mduerig Michael DĂĽrig added a comment - The resolution of OAK-690 improved raw read a bit further: # ReadPropertyTest min 10% 50% 90% max N Jackrabbit 8 8 9 10 131 6623 Oak-Default 22 22 23 24 42 2559 Oak-Default (OAK-690) 15 15 16 17 43 3654

            Some further improvements with the fix from OAK-729:

            # ReadPropertyTest         min     10%     50%     90%    max       N
            Oak-Default (OAK-729)      12      13      14      15     128    4166
            
            mduerig Michael DĂĽrig added a comment - Some further improvements with the fix from OAK-729 : # ReadPropertyTest min 10% 50% 90% max N Oak-Default (OAK-729) 12 13 14 15 128 4166
            jukkaz Jukka Zitting added a comment -

            In http://svn.apache.org/r1498995 I adjusted ItemImpl to only check for item staleness after some transient or persisted operation has been made (tracked by an update counter in SessionDelegate). This avoids the need for repeated staleness checks even in read-only sessions that are never refreshed, thus boosting performance for many common cases.

            jukkaz Jukka Zitting added a comment - In http://svn.apache.org/r1498995 I adjusted ItemImpl to only check for item staleness after some transient or persisted operation has been made (tracked by an update counter in SessionDelegate ). This avoids the need for repeated staleness checks even in read-only sessions that are never refreshed, thus boosting performance for many common cases.

            adding issue reference to performance improvements within the permission evaluation. currently the evaluation is done by every single session and does not include any kind of caching nor optimization (e.g. readstatus)

            angela Angela Schreiber added a comment - adding issue reference to performance improvements within the permission evaluation. currently the evaluation is done by every single session and does not include any kind of caching nor optimization (e.g. readstatus)
            jukkaz Jukka Zitting added a comment -

            Resolving this as fixed as the key problems have already been resolved. For example the property access case that originally triggered this issue is already covered:

            # ReadPropertyTest                 C     min     10%     50%     90%     max       N
            Jackrabbit                         1       3       4       4       4      90   15074
            Oak-Tar                            1       4       4       4       5      16   14199
            

            Any remaining and/or further optimizations should be tracked in more specific issues.

            jukkaz Jukka Zitting added a comment - Resolving this as fixed as the key problems have already been resolved. For example the property access case that originally triggered this issue is already covered: # ReadPropertyTest C min 10% 50% 90% max N Jackrabbit 1 3 4 4 4 90 15074 Oak-Tar 1 4 4 4 5 16 14199 Any remaining and/or further optimizations should be tracked in more specific issues.
            stillalex Alex Deparvu added a comment -

            bulk close for the 0.11 release

            stillalex Alex Deparvu added a comment - bulk close for the 0.11 release

            People

              Unassigned Unassigned
              jukkaz Jukka Zitting
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: