@BenchmarkMode(Mode.AverageTime) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 5, time = 1) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Measurement(iterations = 10, time = 1) public class EmptyStringEquals {
@Param({"", "nonEmptyString"}) private String strParams;
@Benchmark public boolean nonNullAndIsEmpty() { return strParams != null && strParams.isEmpty(); }
@Benchmark public boolean equalsPost() { return strParams != null && strParams.equals(""); }
@Benchmark public boolean preEquals() { return "".equals(strParams); }
} 测试结果: EmptyStringEquals.equalsPost avgt 10 4.240 ± 0.058 ns/op EmptyStringEquals.nonNullAndIsEmpty avgt 10 2.985 ± 0.048 ns/op EmptyStringEquals.preEquals avgt 10 4.243 ± 0.062 ns/op
EmptyStringEquals.equalsPost nonEmptyString avgt 10 3.522 ± 0.034 ns/op EmptyStringEquals.nonNullAndIsEmpty nonEmptyString avgt 10 2.894 ± 0.048 ns/op EmptyStringEquals.preEquals nonEmptyString avgt 10 3.672 ± 0.016 ns/op
|