|
11 | 11 | * %% |
12 | 12 | * Redistribution and use in source and binary forms, with or without |
13 | 13 | * modification, are permitted provided that the following conditions are met: |
14 | | - * |
| 14 | + * |
15 | 15 | * 1. Redistributions of source code must retain the above copyright notice, |
16 | 16 | * this list of conditions and the following disclaimer. |
17 | 17 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
18 | 18 | * this list of conditions and the following disclaimer in the documentation |
19 | 19 | * and/or other materials provided with the distribution. |
20 | | - * |
| 20 | + * |
21 | 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
22 | 22 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
23 | 23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
33 | 33 | */ |
34 | 34 | package net.imglib2.algorithm.blocks.downsample; |
35 | 35 |
|
36 | | -import bdv.export.DownsampleBlock; |
37 | | -import java.util.Arrays; |
38 | 36 | import java.util.concurrent.TimeUnit; |
39 | 37 | import java.util.concurrent.atomic.AtomicLong; |
40 | 38 | import java.util.stream.Collectors; |
41 | 39 | import java.util.stream.IntStream; |
42 | | -import net.imglib2.Cursor; |
43 | | -import net.imglib2.IterableInterval; |
44 | | -import net.imglib2.RandomAccess; |
45 | | -import net.imglib2.RandomAccessible; |
46 | | -import net.imglib2.RandomAccessibleInterval; |
47 | | -import net.imglib2.algorithm.blocks.BlockSupplier; |
48 | | -import net.imglib2.algorithm.blocks.ComputationType; |
49 | | -import net.imglib2.algorithm.blocks.downsample.Downsample.Offset; |
50 | | -import net.imglib2.algorithm.blocks.BlockAlgoUtils; |
51 | | -import net.imglib2.cache.img.CachedCellImg; |
52 | | -import net.imglib2.cache.img.CellLoader; |
53 | | -import net.imglib2.cache.img.ReadOnlyCachedCellImgFactory; |
54 | | -import net.imglib2.cache.img.ReadOnlyCachedCellImgOptions; |
55 | | -import net.imglib2.img.array.ArrayImgs; |
56 | | -import net.imglib2.img.cell.AbstractCellImg; |
57 | | -import net.imglib2.parallel.Parallelization; |
58 | | -import net.imglib2.parallel.TaskExecutor; |
59 | | -import net.imglib2.type.numeric.integer.UnsignedByteType; |
60 | | -import net.imglib2.view.Views; |
| 40 | + |
61 | 41 | import org.openjdk.jmh.annotations.Benchmark; |
62 | 42 | import org.openjdk.jmh.annotations.BenchmarkMode; |
63 | 43 | import org.openjdk.jmh.annotations.Fork; |
|
72 | 52 | import org.openjdk.jmh.runner.options.Options; |
73 | 53 | import org.openjdk.jmh.runner.options.OptionsBuilder; |
74 | 54 |
|
| 55 | +import net.imglib2.Cursor; |
| 56 | +import net.imglib2.IterableInterval; |
| 57 | +import net.imglib2.RandomAccessibleInterval; |
| 58 | +import net.imglib2.algorithm.blocks.BlockAlgoUtils; |
| 59 | +import net.imglib2.algorithm.blocks.BlockSupplier; |
| 60 | +import net.imglib2.algorithm.blocks.ComputationType; |
| 61 | +import net.imglib2.algorithm.blocks.downsample.Downsample.Offset; |
| 62 | +import net.imglib2.cache.img.CachedCellImg; |
| 63 | +import net.imglib2.img.array.ArrayImgs; |
| 64 | +import net.imglib2.img.cell.AbstractCellImg; |
| 65 | +import net.imglib2.parallel.Parallelization; |
| 66 | +import net.imglib2.parallel.TaskExecutor; |
| 67 | +import net.imglib2.type.numeric.integer.UnsignedByteType; |
| 68 | +import net.imglib2.view.Views; |
| 69 | + |
75 | 70 | @State( Scope.Benchmark ) |
76 | 71 | @Warmup( iterations = 3, time = 100, timeUnit = TimeUnit.MILLISECONDS ) |
77 | 72 | @Measurement( iterations = 10, time = 100, timeUnit = TimeUnit.MILLISECONDS ) |
@@ -101,32 +96,6 @@ public DownsampleBdvBenchmark() |
101 | 96 | downsampledDimensions = Downsample.getDownsampledDimensions( raw.dimensionsAsLongArray(), downsampleInDim ); |
102 | 97 | } |
103 | 98 |
|
104 | | - @Benchmark |
105 | | - public void benchmarkBdv() |
106 | | - { |
107 | | - RandomAccessible< UnsignedByteType > extended = Views.extendBorder( raw ); |
108 | | - int[] downsamplingFactors = new int[ 3 ]; |
109 | | - Arrays.setAll(downsamplingFactors, d -> downsampleInDim[ d ] ? 2 : 1 ); |
110 | | - final DownsampleBlock< UnsignedByteType > downsampleBlock = DownsampleBlock.create( cellDimensions, downsamplingFactors, UnsignedByteType.class, RandomAccess.class ); |
111 | | - final RandomAccess< UnsignedByteType > in = extended.randomAccess(); |
112 | | - final long[] currentCellMin = new long[ 3 ]; |
113 | | - final int[] currentCellDim = new int[ 3 ]; |
114 | | - CellLoader< UnsignedByteType > downsampleBlockLoader = cell -> { |
115 | | - Arrays.setAll( currentCellMin, d -> cell.min( d ) * downsamplingFactors[ d ] ); |
116 | | - Arrays.setAll( currentCellDim, d -> ( int ) cell.dimension( d ) ); |
117 | | - in.setPosition( currentCellMin ); |
118 | | - downsampleBlock.downsampleBlock( in, cell.cursor(), currentCellDim ); |
119 | | - }; |
120 | | - final CachedCellImg< UnsignedByteType, ? > downsampled = new ReadOnlyCachedCellImgFactory().create( |
121 | | - downsampledDimensions, |
122 | | - new UnsignedByteType(), |
123 | | - downsampleBlockLoader, |
124 | | - ReadOnlyCachedCellImgOptions.options().cellDimensions( cellDimensions) ); |
125 | | - |
126 | | - touchAllCellsSingleThreaded( downsampled ); |
127 | | - downsampled.getCache().invalidateAll(); |
128 | | - } |
129 | | - |
130 | 99 | @Benchmark |
131 | 100 | public void benchmarkDownsampleDouble() |
132 | 101 | { |
|
0 commit comments