Skip to content

Commit 2509c4d

Browse files
committed
Benchmarks.rst: add commit hash and figure refs
1 parent 57dbbd2 commit 2509c4d

1 file changed

Lines changed: 10 additions & 15 deletions

File tree

docs/ops/doc/Benchmarks.rst

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
SciJava Ops Benchmarks
22
======================
33

4-
54
This page describes a quantitative analysis of the SciJava Ops framework, and is heavily inspired by a similar comparison of `ImgLib2 <https://imagej.net/libs/imglib2/benchmarks>`_.
65

76
Hardware and Software
@@ -17,7 +16,7 @@ The following software components were used:
1716

1817
* Ubuntu 22.04.3 LTS
1918
* OpenJDK Runtime Environment (build 11.0.21) with OpenJDK 64-Bit Server VM (build 11.0.21, mixed mode, sharing)
20-
* SciJava Ops Engine version ``0.0-SNAPSHOT``
19+
* SciJava Incubator commit `57dbbd25 <https://github.com/scijava/incubator/commit/57dbbd253fe9d8947dd2e72ec05c8accff77a7dc>`_
2120
* ImageJ Ops version ``2.0.0``
2221

2322
All benchmarks are executed using the `Java Microbenchmark Harness <https://github.com/openjdk/jmh>`_, using the following parameters:
@@ -57,31 +56,29 @@ We first benchmark the base penalty of executing this method using SciJava Ops,
5756
* Output buffer creation + SciJava Ops invocation
5857
* SciJava Ops invocation using Op adaptation
5958

60-
The results are shown in the chart below:
59+
The results are shown in **Figure 1**. We find Op execution through the SciJava Ops framework adds a few milliseconds of additional overhead. A few additional milliseconds of overhead are observed when SciJava Ops is additionally tasked with creating an output buffer.
6160

6261
.. chart:: ../images/BenchmarkMatching.json
6362

64-
Algorithm execution performance (lower is better)
63+
**Figure 1:** Algorithm execution performance (lower is better)
6564

66-
Note that the avove requests are benchmarked without assistance from the Op cache, i.e. they are designed to model the full matching process. As repeated Op requests will utilize the Op cache, we benchmark cached Op retrieval separately, with these results shown below:
65+
Note that the avove requests are benchmarked without assistance from the Op cache, i.e. they are designed to model the full matching process. As repeated Op requests will utilize the Op cache, we benchmark cached Op retrieval separately, with results shown in **Figure 2**. These benchmarks suggest Op caching helps avoid the additional overhead of Op adaptation as its performance approaches that of normal Op execution.
6766

6867
.. chart:: ../images/BenchmarkCaching.json
6968

70-
Algorithm execution performance with Op caching (lower is better)
71-
72-
We can see that with Op caching, TODO
69+
**Figure 2:** Algorithm execution performance with Op caching (lower is better)
7370

74-
Finally, we benchmark the overhead of SciJava Ops parameter conversion, by considering the situation where we initially have a ``RandomAccessibleInterval<ByteType>``, which we must convert to call our method. In such a situation, we consider the following procedures:
71+
Finally, we benchmark the overhead of SciJava Ops parameter conversion. Suppose we instead wish to operate upon a ``RandomAccessibleInterval<ByteType>`` - we must convert it to call our Op. We consider the following procedures:
7572

7673
* Image conversion + output buffer creation + static method invocation
7774
* output buffer creation + SciJava Ops invocation using Op conversion
7875
* SciJava Ops invocation using Op conversion and Op adaptation
7976

80-
The results are shown in the chart below:
77+
The results are shown in **Figure 3**; note the Op cache is **not** enabled. We observe overheads on the order of 10 milliseconds to perform Op conversion with and without Op adaptation.
8178

8279
.. chart:: ../images/BenchmarkConversion.json
8380

84-
Algorithm execution performance with Op conversion (lower is better)
81+
**Figure 3:** Algorithm execution performance with Op conversion (lower is better)
8582

8683
Framework Comparison
8784
--------------------
@@ -108,13 +105,11 @@ We then benchmark the performance of executing this code using the following pat
108105
* SciJava Ops invocation
109106
* ImageJ Ops invocation (using a ``Class`` wrapper to make the method discoverable within ImageJ Ops)
110107

111-
The results are shown in the chart below:
108+
The results are shown in **Figure 4**. When algorithm matching dominates execution time, the SciJava Ops matching framework provides significant improvement in matching performance in comparison with the original ImageJ Ops framework.
112109

113110
.. chart:: ../images/BenchmarkFrameworks.json
114111

115-
Algorithm execution performance by Framework (lower is better)
116-
117-
From these results, we can see that, when algorithm matching dominates execution time, the SciJava Ops matching framework provides significant improvement in matching performance in comparison with the original ImageJ Ops framework.
112+
**Figure 4:** Algorithm execution performance by Framework (lower is better)
118113

119114
Reproducing these Results
120115
-------------------------

0 commit comments

Comments
 (0)