diff --git a/build.gradle.kts b/build.gradle.kts index d8f91a2..3eb3994 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,6 +32,9 @@ tasks { val compilerArgs = options.compilerArgs options.encoding = Charsets.UTF_8.name() compilerArgs.add("--add-modules=jdk.incubator.vector") // Gale - Pufferfish - SIMD support + compilerArgs.add("-Xlint:-deprecation") + compilerArgs.add("-Xlint:-unchecked") + compilerArgs.add("-Xlint:-removal") } build.configure { diff --git a/src/main/java/cn/dreeam/sunbox/SunBox.java b/src/main/java/cn/dreeam/sunbox/SunBox.java index 8afd5f5..98c54a7 100644 --- a/src/main/java/cn/dreeam/sunbox/SunBox.java +++ b/src/main/java/cn/dreeam/sunbox/SunBox.java @@ -19,7 +19,7 @@ public static void main(String[] args) { private static void runJMH() throws Exception { Options opt = new OptionsBuilder() // TODO: Notice: Include benchmark class name you want - .include("NonNullListGetBenchmark") + .include("BiomeLookupBenchmark") .forks(1) .warmupIterations(4) .measurementIterations(10) diff --git a/src/main/java/cn/dreeam/sunbox/benchmarks/jmh/BiomeLookupBenchmark.java b/src/main/java/cn/dreeam/sunbox/benchmarks/jmh/BiomeLookupBenchmark.java new file mode 100644 index 0000000..66faaf4 --- /dev/null +++ b/src/main/java/cn/dreeam/sunbox/benchmarks/jmh/BiomeLookupBenchmark.java @@ -0,0 +1,44 @@ +package cn.dreeam.sunbox.benchmarks.jmh; + +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@State(Scope.Thread) +public class BiomeLookupBenchmark { + + private static final double[] QUART_OFFSETS = {0.0D, 0.25D, 0.5D, 0.75D}; + + private int[] inputData; + private static final int SIZE = 4096; + + @Setup + public void setup() { + inputData = new int[SIZE]; + Random rand = new Random(12345L); + for (int i = 0; i < SIZE; i++) { + inputData[i] = rand.nextInt(); + } + } + + @Benchmark + public void testFpDivision(Blackhole bh) { + double sum = 0; + for (int i = 0; i < SIZE; i++) { + sum += (double) (inputData[i] & 3) / 4.0; + } + bh.consume(sum); + } + + @Benchmark + public void testTableLookup(Blackhole bh) { + double sum = 0; + for (int i = 0; i < SIZE; i++) { + sum += QUART_OFFSETS[inputData[i] & 3]; + } + bh.consume(sum); + } +} \ No newline at end of file