JSONSchemaBenchmark1.java
package com.alibaba.fastjson2.benchmark.schema;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.schema.JSONSchema;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.runner.RunnerException;
public class JSONSchemaBenchmark1 {
static final JSONSchema SCHEMA_UUID = JSONObject.of("type", "string", "format", "uuid").to(JSONSchema::of);
static final JSONSchema SCHEMA_DATETIME = JSONObject.of("type", "string", "format", "date-time").to(JSONSchema::of);
static final JSONSchema SCHEMA_DATE = JSONObject.of("type", "string", "format", "date").to(JSONSchema::of);
static final JSONSchema SCHEMA_TIME = JSONObject.of("type", "string", "format", "time").to(JSONSchema::of);
static final JSONSchema SCHEMA_NUMBER = JSONObject.of("type", "number", "minimum", 10).to(JSONSchema::of);
static final JSONSchema SCHEMA_INTEGER = JSONObject.of("type", "integer", "minimum", 10).to(JSONSchema::of);
@Benchmark
public void format_uuid(Blackhole bh) {
bh.consume(
SCHEMA_UUID.isValid("a7f41390-39a9-4ca6-a13b-88cf07a41108")
);
}
@Benchmark
public void format_datetime(Blackhole bh) {
bh.consume(
SCHEMA_DATETIME.isValid("2017-07-21 12:13:14")
);
}
@Benchmark
public void format_date(Blackhole bh) {
bh.consume(
SCHEMA_DATE.isValid("2017-07-21")
);
}
@Benchmark
public void format_time(Blackhole bh) {
bh.consume(
SCHEMA_TIME.isValid("12:13:14")
);
}
public static void format_perf() {
long start = System.currentTimeMillis();
for (int i = 0; i < 1000 * 1000 * 100; ++i) {
// SCHEMA_UUID.isValid("a7f41390-39a9-4ca6-a13b-88cf07a41108");
// SCHEMA_DATETIME.isValid("2017-07-21 12:13:14"); // 123
// SCHEMA_DATE.isValid("2017-07-21"); // 48
// SCHEMA_TIME.isValid("12:13:14"); //
// SCHEMA_NUMBER.isValid(9); // 42
// SCHEMA_NUMBER.isValid(11); // 302 120
// SCHEMA_NUMBER.isValid(11D); //
SCHEMA_NUMBER.isValid(9D); //
// SCHEMA_INTEGER.isValid(9); // 87
// SCHEMA_INTEGER.isValid(11); //
}
long millis = System.currentTimeMillis() - start;
System.out.println("millis : " + millis);
// zulu17.32.13 :
// zulu11.52.13 :
// zulu8.58.0.13 :
}
public static void format_perf_test() {
for (int i = 0; i < 10; i++) {
format_perf();
}
}
public static void main(String[] args) throws RunnerException {
format_perf_test();
//
// Options options = new OptionsBuilder()
// .include(JSONSchemaBenchmark.class.getName())
// .mode(Mode.Throughput)
// .timeUnit(TimeUnit.MILLISECONDS)
// .forks(1)
// .build();
// new Runner(options).run();
}
}