Skip to content

Commit 425b057

Browse files
committed
Add benchmark for Gauss3 on a small image
1 parent 0cd4d0e commit 425b057

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*-
2+
* #%L
3+
* ImgLib2: a general-purpose, multidimensional image processing library.
4+
* %%
5+
* Copyright (C) 2009 - 2021 Tobias Pietzsch, Stephan Preibisch, Stephan Saalfeld,
6+
* John Bogovic, Albert Cardona, Barry DeZonia, Christian Dietz, Jan Funke,
7+
* Aivar Grislis, Jonathan Hale, Grant Harris, Stefan Helfrich, Mark Hiner,
8+
* Martin Horn, Steffen Jaensch, Lee Kamentsky, Larry Lindsey, Melissa Linkert,
9+
* Mark Longair, Brian Northan, Nick Perry, Curtis Rueden, Johannes Schindelin,
10+
* Jean-Yves Tinevez and Michael Zinsmaier.
11+
* %%
12+
* Redistribution and use in source and binary forms, with or without
13+
* modification, are permitted provided that the following conditions are met:
14+
*
15+
* 1. Redistributions of source code must retain the above copyright notice,
16+
* this list of conditions and the following disclaimer.
17+
* 2. Redistributions in binary form must reproduce the above copyright notice,
18+
* this list of conditions and the following disclaimer in the documentation
19+
* and/or other materials provided with the distribution.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
25+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31+
* POSSIBILITY OF SUCH DAMAGE.
32+
* #L%
33+
*/
34+
package net.imglib2.algorithm.gauss3;
35+
36+
import net.imglib2.img.Img;
37+
import net.imglib2.img.array.ArrayImgs;
38+
import net.imglib2.parallel.Parallelization;
39+
import net.imglib2.type.numeric.real.DoubleType;
40+
import net.imglib2.view.Views;
41+
import org.openjdk.jmh.annotations.*;
42+
import org.openjdk.jmh.runner.Runner;
43+
import org.openjdk.jmh.runner.RunnerException;
44+
import org.openjdk.jmh.runner.options.Options;
45+
import org.openjdk.jmh.runner.options.OptionsBuilder;
46+
47+
import java.util.concurrent.TimeUnit;
48+
49+
/**
50+
* Measure the time own execution of {@link Gauss3#gauss}.
51+
*/
52+
@Fork( 1 )
53+
@State( Scope.Benchmark )
54+
@Warmup( iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
55+
@Measurement( iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS )
56+
@BenchmarkMode( Mode.AverageTime )
57+
@OutputTimeUnit( TimeUnit.MILLISECONDS )
58+
public class Gauss3Benchmark
59+
{
60+
61+
private double sigma = 2.0;
62+
63+
private Img<DoubleType> source = ArrayImgs.doubles( 100, 100 );
64+
65+
private Img<DoubleType> target = ArrayImgs.doubles( 100, 100 );
66+
67+
@Benchmark
68+
public void benchmark()
69+
{
70+
Gauss3.gauss( sigma, Views.extendBorder( source ), target);
71+
}
72+
73+
public static void main( String[] args ) throws RunnerException
74+
{
75+
Options opt = new OptionsBuilder()
76+
.include( Gauss3Benchmark.class.getSimpleName() )
77+
.build();
78+
new Runner( opt ).run();
79+
}
80+
}

0 commit comments

Comments
 (0)