Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Tip
titleInformation
These are the results of our performance tests. If your performance is sensitive and/or you are working on server sizing, it may be better that you perform performance tests on a staging instance yourself.


Summary

Basically, expect 20ms per requirement on the page when you save a page, and 20ms per requirement on view.

Performance improvements in v1.11.5

  • For pages with no requirements, we've improved the speed by skipping the indexation of requirements:
    • We skip the parsing if the storage format hasn't changed,
    • We skip the parsing if the rendered format hasn't changed, in case it contains an "Include" or "Scaffolding" macro.
    • We skip the parsing if there is no requirement in the old or new version.
  • For pages with requirements:
    • We've added indexes on database columns. On our instance we get 5x faster results when saving a page, but we may be in special circumstances.
    • When we index a page (=when a user saves a page), we've batched the lookups of requirements, so we don't do 1 database request for each requirement on the page. On our instance, we get again 4x faster times depending on database latency (most LANs are on 1ms latency, but we've measured with 5ms).
    • We'd be thrilled if you have 20x better response times than in 1.11.4, but we'll check back with customers before asserting that.

Details

We have evaluated on a personal machine with the following setup:

  • Macbook 2013
  • 2,4 GHz Intel Core i7-3635QM (3rd generation–2013, not the 8th generation from 2017),
  • RAM 8GB.
  • Database latency: 5 to 10ms (random) per query.
  • Database prefilled with 80.000 requirements.

We have simply instrumented the code and created massive pages:

19ms
Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, 1Kb each in average. No Jira connection.

Time

Same, with 1ms database latency.

Time

1ms latency, 200-char requirements

Time

1ms latency, 1000 requirements.

Page creation

For ~400 requirements / 480Kb of text.

  • 400ms rendering of the page
  • 48ms per requirement,
No Jira connection.
  • Total: +
7
  • 19,6 seconds (on top of Confluence's algorithm).
  •  Test with a Jira connection
+ 28ms
  • 400ms rendering
  • 14ms per requirement,
  • Total +6068ms.
  • 1082ms
    rendering (Confluence)
  • 12ms per requirement
  • Total +12324ms
Page edition

For ~400 requirements / 480Kb of text.

  • 400ms rendering of the page
  • 32ms per requirement,
  • No Jira connection.
    • Total +
    11
    • 13,
    2
    • 3 seconds.

    For 0 requirement

    /

    and 480kb of raw text:

    • 1ms if the page doesn't contain any "include" or "Scaffolding" macro,
    • 564ms if the page contains mutable content (include macro or Scaffolding)
    .
    •  Test with a Jira connection
    Submission of excerptsSearchDependency matrixCoverage matrixTraceability matrix

    ...

    • .
    • 400ms rendering
    • 12ms per requirement,
    • Total +5272ms.
    • 400ms rendering
    • Total +4791ms.
    • 2081ms rendering
    • 10ms per requirement
    • Total +12204ms

    Submission of excerpts

    (This operation is in the background, the user doesn't wait for this).

    • 4ms per non-modified requirement,
    • 10 to 53ms per modified requirement,
      (depending on the size of text and the number of properties).
    • Total 12,800s for 400 modified requirements.
    • 5,26ms per modified requirement,
    • Total +2107ms.
    • Total +1843ms.
    • 8ms per modified requirement.
    • Total +8111ms