Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Basically, once you have 50.000 requirements in the database, expect 20ms per requirement on the page when you save a page, and 20ms per requirement on view. This is not a commitment, as it depends on the machine, the set up, the configuration, the version of Confluence and Requirement Yogi.

Performance improvements in v1.11.5

  • For pages with no requirements, we've improved the speed by skipping our indexation:
    • 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.

For users with Confluence 6.0.2 or 5.10

...

    • .

...

  • AORequirement.SPACEKEY and REQKEY (the index spans on those 2 columns)
  • AODependency.SPACEKEY and KEY and BASELINE (the index spans on those 3 columns).
  • AOIntegrationQueue.SERVICEID
  • AOIntegrationQueue.STATUS

Details

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

...

We have simply instrumented the code and created massive pages:

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
  • 400ms rendering of the page
  • 48ms per requirement,
  • Total: +19,6 seconds (on top of Confluence's algorithm).
  • 400ms rendering
  • 14ms per requirement,
  • Total +6068ms.
  • 1082ms
    rendering (Confluence)
  • 12ms per requirement
  • Total +12324ms
Page edition
  • 400ms rendering of the page
  • 32ms per requirement,
  • Total +13,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).
  • 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