From 5abf2628f213fd655ab0af551ac59949ffeca685 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Tue, 5 Sep 2023 19:23:56 +0800 Subject: [PATCH] add benchmark --- .../benchmark/fastcode/DateToString.java | 32 +++++++++++++++++++ .../benchmark/fastcode/DateToStringTest.java | 29 +++++++++++++++++ .../alibaba/fastjson2/fastcode/DateTest.java | 15 +++++++++ 3 files changed, 76 insertions(+) create mode 100644 benchmark/src/main/java/com/alibaba/fastjson2/benchmark/fastcode/DateToString.java create mode 100644 benchmark/src/test/java/com/alibaba/fastjson2/benchmark/fastcode/DateToStringTest.java create mode 100644 test-jdk17/src/test/java/com/alibaba/fastjson2/fastcode/DateTest.java diff --git a/benchmark/src/main/java/com/alibaba/fastjson2/benchmark/fastcode/DateToString.java b/benchmark/src/main/java/com/alibaba/fastjson2/benchmark/fastcode/DateToString.java new file mode 100644 index 0000000000..c3e4e91550 --- /dev/null +++ b/benchmark/src/main/java/com/alibaba/fastjson2/benchmark/fastcode/DateToString.java @@ -0,0 +1,32 @@ +package com.alibaba.fastjson2.benchmark.fastcode; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +public class DateToString { + static final Date date = new Date(1693836447048L); + + @Benchmark + public void dateToString(Blackhole bh) throws Throwable { + bh.consume(date.toString()); + } + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(DateToString.class.getName()) + .mode(Mode.Throughput) + .timeUnit(TimeUnit.MILLISECONDS) + .warmupIterations(1) + .forks(1) + .build(); + new Runner(options).run(); + } +} diff --git a/benchmark/src/test/java/com/alibaba/fastjson2/benchmark/fastcode/DateToStringTest.java b/benchmark/src/test/java/com/alibaba/fastjson2/benchmark/fastcode/DateToStringTest.java new file mode 100644 index 0000000000..080376f9dc --- /dev/null +++ b/benchmark/src/test/java/com/alibaba/fastjson2/benchmark/fastcode/DateToStringTest.java @@ -0,0 +1,29 @@ +package com.alibaba.fastjson2.benchmark.fastcode; + +import org.openjdk.jmh.infra.Blackhole; + +public class DateToStringTest { + static final Blackhole BH = new Blackhole("Today's password is swordfish. I understand instantiating Blackholes directly is dangerous."); + static final DateToString benchmark = new DateToString(); + static final int COUNT = 100_000_000; + + public static void dateToString() throws Throwable { + for (int j = 0; j < 5; j++) { + long start = System.currentTimeMillis(); + for (int i = 0; i < COUNT; ++i) { + benchmark.dateToString(BH); + } + long millis = System.currentTimeMillis() - start; + System.out.println("DateToString-dateToString millis : " + millis); + // zulu8.58.0.13 : + // zulu11.52.13 : + // zulu17.38.21 : + // jdk22-ea : 2495 + // jdk22-baseline : 5669 + } + } + + public static void main(String[] args) throws Throwable { + dateToString(); + } +} diff --git a/test-jdk17/src/test/java/com/alibaba/fastjson2/fastcode/DateTest.java b/test-jdk17/src/test/java/com/alibaba/fastjson2/fastcode/DateTest.java new file mode 100644 index 0000000000..3064bf1f86 --- /dev/null +++ b/test-jdk17/src/test/java/com/alibaba/fastjson2/fastcode/DateTest.java @@ -0,0 +1,15 @@ +package com.alibaba.fastjson2.fastcode; + +import org.junit.jupiter.api.Test; + +import java.util.Date; + +public class DateTest { + @Test + public void test() { + Date date = new Date(); + String str = date.toString(); + char[] chars = str.toCharArray(); + System.out.println(str); + } +}