Skip to content

Instantly share code, notes, and snippets.

@sbcoba
Last active January 26, 2016 02:21
Show Gist options
  • Save sbcoba/ad2cdf410976a76ea064 to your computer and use it in GitHub Desktop.
Save sbcoba/ad2cdf410976a76ea064 to your computer and use it in GitHub Desktop.
import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;
@Warmup(iterations = 5)
@Measurement(iterations = 10)
@Fork(1)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public class SumBenchmark {
@Benchmark
public long primitiveSumTest() {
long sum = 0L;
for (long i = 0L; i < 1000L; i++) {
sum += i;
}
return sum;
}
@Benchmark
public long wrapperSumTest() {
Long sum = 0L;
for (Long i = 0L; i < 1000L; i++) {
sum += i;
}
return sum;
}
@Benchmark
public long wrapper2SumTest() {
Long sum = new Long(0L);
for (Long i = new Long(0L); i < 1000L; i = Long.sum(i, 1L)) {
sum = Long.sum(sum, i);
}
return sum;
}
@Benchmark
public int intStreamSumTest() {
return IntStream.iterate(0, i -> i + 1).limit(1000).sum();
}
@Benchmark
public int intStreamRangeSumTest() {
return IntStream.rangeClosed(0, 1000).sum();
}
@Benchmark
public long longStreamTest() throws Exception {
return LongStream.iterate(0, i -> i + 1).limit(1000).sum();
}
@Benchmark
public long longStreamRangeTest() throws Exception {
return LongStream.rangeClosed(0, 1000).sum();
}
@Benchmark
public long streamTest() throws Exception {
return Stream.iterate(0, i -> i + 1).limit(1000).reduce(Integer::sum).get();
}
}
@sbcoba
Copy link
Author

sbcoba commented Jan 26, 2016

Benchmark Mode Cnt Score Error Units
SumBenchmark.primitiveSumTest avgt 10 0.438 ± 0.024 us/op
SumBenchmark.wrapperSumTest avgt 10 6.942 ± 0.406 us/op
SumBenchmark.wrapper2SumTest avgt 10 6.761 ± 0.305 us/op
SumBenchmark.intStreamSumTest avgt 10 7.409 ± 0.781 us/op
SumBenchmark.intStreamRangeSumTest avgt 10 2.383 ± 0.107 us/op
SumBenchmark.longStreamTest avgt 10 7.292 ± 0.268 us/op
SumBenchmark.longStreamRangeTest avgt 10 2.340 ± 0.075 us/op
SumBenchmark.streamTest avgt 10 14.122 ± 1.034 us/op

@sbcoba
Copy link
Author

sbcoba commented Jan 26, 2016

pom.xml dependency

    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-core</artifactId>
      <version>1.11.3</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-generator-annprocess</artifactId>
      <version>1.11.3</version>
      <scope>test</scope>
    </dependency>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment