Closed tpietzsch closed 2 years ago
Wow, that's a big difference.
Benchmarks:
(Java 8, Macbook Air M1) baseline:
Benchmark (numRenderingThreads) Mode Cnt Score Error Units
Rendering25SourcesBenchmark.bench 1 avgt 5 718.141 ± 11.326 ms/op
Rendering25SourcesBenchmark.bench 8 avgt 5 168.347 ± 24.386 ms/op
RenderingSingleSourceBenchmark.bench 1 avgt 5 29.832 ± 0.902 ms/op
RenderingSingleSourceBenchmark.bench 8 avgt 5 6.867 ± 1.168 ms/op
RenderingWithEmptyBenchmark.bench 1 avgt 5 89.228 ± 1.462 ms/op
RenderingWithEmptyBenchmark.bench 8 avgt 5 17.614 ± 2.205 ms/op
thousand-sources:
Benchmark (numRenderingThreads) Mode Cnt Score Error Units
Rendering25SourcesBenchmark.bench 1 avgt 5 99.976 ± 4.295 ms/op
Rendering25SourcesBenchmark.bench 8 avgt 5 27.956 ± 1.479 ms/op
RenderingSingleSourceBenchmark.bench 1 avgt 5 30.953 ± 1.064 ms/op
RenderingSingleSourceBenchmark.bench 8 avgt 5 7.488 ± 0.563 ms/op
RenderingWithEmptyBenchmark.bench 1 avgt 5 27.937 ± 1.011 ms/op
RenderingWithEmptyBenchmark.bench 8 avgt 5 7.518 ± 0.607 ms/op
(Java 11, Macbook Air M1) baseline:
Benchmark (numRenderingThreads) Mode Cnt Score Error Units
Rendering25SourcesBenchmark.bench 1 avgt 5 841,733 ± 21,853 ms/op
Rendering25SourcesBenchmark.bench 8 avgt 5 191,477 ± 10,712 ms/op
RenderingSingleSourceBenchmark.bench 1 avgt 5 18,659 ± 0,118 ms/op
RenderingSingleSourceBenchmark.bench 8 avgt 5 7,374 ± 0,398 ms/op
RenderingWithEmptyBenchmark.bench 1 avgt 5 86,158 ± 0,098 ms/op
RenderingWithEmptyBenchmark.bench 8 avgt 5 19,520 ± 0,852 ms/op
thousand-sources:
Benchmark (numRenderingThreads) Mode Cnt Score Error Units
Rendering25SourcesBenchmark.bench 1 avgt 5 105,908 ± 1,165 ms/op
Rendering25SourcesBenchmark.bench 8 avgt 5 21,424 ± 0,388 ms/op
RenderingSingleSourceBenchmark.bench 1 avgt 5 33,123 ± 0,299 ms/op
RenderingSingleSourceBenchmark.bench 8 avgt 5 8,018 ± 0,076 ms/op
RenderingWithEmptyBenchmark.bench 1 avgt 5 31,920 ± 0,311 ms/op
RenderingWithEmptyBenchmark.bench 8 avgt 5 7,286 ± 1,048 ms/op
This pull request has been mentioned on Image.sc Forum. There might be relevant details there:
https://forum.image.sc/t/new-bigdataviewer-version-10-4-1/68818/1
New renderer that splits the target area into tiles, aligned along projected source bounding boxes. Every tile contains only the sources that overlap the tile. This dramatically reduces the number of sources that have to be blended at every output pixel.
Here is rendering 30x30 partially overlapping sources with the current renderer:
https://user-images.githubusercontent.com/622070/165179165-40711122-fb3f-4e6c-923a-3eaf28e635f8.mp4
Here is rendering the same setup with the tiled renderer:
https://user-images.githubusercontent.com/622070/165179194-b3528f79-45ee-4c59-928f-475c161a0b2a.mp4