1 package org.oxerr.spring.cache.redis.scored.jmh;
2
3 import org.openjdk.jmh.annotations.Benchmark;
4 import org.openjdk.jmh.annotations.Scope;
5 import org.openjdk.jmh.annotations.State;
6 import org.oxerr.spring.cache.redis.scored.score.resolver.annotated.AnnotatedScoreResolver;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.springframework.data.annotation.Version;
10
11 @State(Scope.Benchmark)
12 public class AnnotatedScoreResolverBenchmark {
13
14 private static final Logger log = LoggerFactory.getLogger(AnnotatedScoreResolverBenchmark.class);
15
16 private final AnnotatedScoreResolver annotatedScoreResolver;
17 private final Book book;
18
19 public AnnotatedScoreResolverBenchmark() {
20 this.annotatedScoreResolver = new AnnotatedScoreResolver(Version.class);
21 this.book = new Book("isbn-1234", "version 1", 1L);
22 }
23
24 @Benchmark
25 public void testResolveScore() {
26 this.annotatedScoreResolver.resolveScore(this.book);
27 }
28
29 public static void main(String[] args) {
30 AnnotatedScoreResolverBenchmark benchmark = new AnnotatedScoreResolverBenchmark();
31
32 for (int i = 0; i < 100; i++) {
33 long startTime = System.nanoTime();
34
35 benchmark.testResolveScore();
36 long elapsedNanos = System.nanoTime() - startTime;
37
38 log.info("Elapsed nanos: {}", elapsedNanos);
39 }
40 }
41
42 }