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 latency of the DB, the version of Confluence and Requirement Yogi.

Performance change in 3.0

  • When saving a page, we've gone from 3500 requests to 1356 (Don't assume we just had to switch a flag, it instead required heavy optimizations for each request).

Performance change in 2.0

  • We've deeply modified the indexing algorithm in 2.0, because we are now importing Excel files.
  • This algo generally reads first and checks whether it needs to change the data, instead of deleting all and writing blindly.
  • We did not notice much change in speed. Some speeds are improved, other are worse, depending on the number of modified requirements and properties.

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.

...

Details in

...

3.0

We

...

Details

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

  • iMac 2013 – 3.4 GHz Intel Core i5,
  • RAM 8GB.
  • Database latency: 5 to 10ms (random) per query.
  • Network latency to the database: 2ms (simulated) per query,
  • Database prefilled with 80.000 requirements.

We have simply instrumented the code and created massive pages:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements,
1.3 MB page size.

Page creation
  • 5483ms saving the page
  • 12ms per requirement,
  • Total: +5 seconds (on top of Confluence's algorithm).
  • 8.3s (Confluence)
  • 7ms per requirement
  • Total +7.5s

Submission of excerpts

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

  • 14ms per modified requirement
    (depending on the size of text and the number of properties).
  • Total 5.65s for 400 modified requirements.
  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.
  • 7ms per modified requirement.
  • Total +7854ms

Tested for Requirement Yogi 3.0.0 / C7.4 with 2ms and 1ms network latency,
in addition to the database latency, already loaded with 80.000 requirements.

Details in 2.6.9

Same conditions:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements,
1.3 MB page size.

Page creation
  • 8338ms saving the page
  • 20ms per requirement,
  • Total: +7.9 seconds (on top of Confluence's algorithm).
  • 12.9s
    saving (Confluence)
  • 12ms per requirement
  • Total +12.1s

Submission of excerpts

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

  • 28ms per modified requirement
    (depending on the size of text and the number of properties).
  • Total 11.40s for 400 modified requirements.
  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.
  • 14ms per modified requirement.
  • Total +13.9s
Tested for Requirement Yogi 2.6.9 / C7.4 with 2ms and 1ms network latency,
in addition to the database latency, already loaded with 80.000 requirements.

Details in 2.0

Same conditions:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements

Page creation
  • 480ms rendering of the page
  • 22ms per requirement,
  • Total: +8.9 seconds (on top of Confluence's algorithm).
  • 1082ms
    rendering (Confluence)
  • 13ms per requirement
  • Total +13s
Page edition
  • 700ms rendering of the page
  • 21ms per requirement,
  • Total +11.6 seconds.
  • 1700ms rendering
  • 15ms per requirement
  • Total +15.7s

Submission of excerpts

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

  • 20-40ms per modified requirement
    (depending on the size of text and the number of properties).
  • Total 18,7s for 400 modified requirements.
  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.
  • 8ms per modified requirement.
  • Total +8111ms

New result:

  • 3ms per modified requirement
  • Total: 3s
Tested for Requirement Yogi 2.0.0 with 2ms and 1ms network latency, in addition to the database latency, already loaded with 80.000 requirements.

...