@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
|