Hi,

SetPropertyTest is a simple benchmark that measures how long it takes
to execute the following snippet of code:

    for (int i = 0; i < 1000; i++) {
        node.setProperty("count", i);
        session.save();
    }

The idea behind this benchmark is to get an estimate of the minimum
amount of time it takes to write even the simplest changes to the
repository.

Last month I started looking at this benchmark as it highlights many
of our current bottlenecks, like slow access to node type information
and repetitive commit hooks, that affect also many other operations.

I'm glad to report that our combined efforts on these fronts are
paying off. Here's how we did a month ago:

    # SetPropertyTest                min     10%     50%     90%     max       N
    Oak-Default                      599     608     638     764     975      91
    Oak-Segment                     4124    4141    4206    4608    4699      14

And here's the latest status now:

    # SetPropertyTest                min     10%     50%     90%     max       N
    Oak-Default                      318     325     350     420     791     162
    Oak-Segment                     1030    1057    1070    1123    1264      56

In other words, the performance boosts for this benchmark are roughly
2x and 4x for the H2 and segment MKs, respectively.

For comparison, here's how Jackrabbit is doing:

    # SetPropertyTest                min     10%     50%     90%     max       N
    Jackrabbit                       260     276     299     351     650     192

It's still faster than Oak, but we're getting pretty close and there's
still a whole bunch of further optimizations we can do.

PS. This benchmark is unfortunately particularly ill-suited for use
with the MongoMK, as it ends up blowing up the revision history of a
single node:

    # SetPropertyTest                min     10%     50%     90%     max       N
    Oak-Mongo                      31442   32098   58855   92934   93871      10

BR,

Jukka Zitting

Reply via email to