【发布时间】:2014-07-07 00:24:06
【问题描述】:
我开发了一个小型库,可以使用注释进行声明性参数验证,如下所示:
@Validate({"not null | number"})
public static Integer notNullAnnotated(Integer number) {
return number++;
}
现在我将其与纯 java 代码版本进行基准测试:
public static Integer notNullInline(Integer number) {
if (number != null) {
return number++;
} else {
throw new IllegalArgumentException("argument should not be null");
}
}
这是测试:
@Test
public void performanceTest() {
long time = System.nanoTime();
for (int i = 0; i < iterationCount; i++) {
notNullAnnotated(i);
}
System.out.println("time annotated : " + (System.nanoTime() - time));
time = System.nanoTime();
for (int i = 0; i < iterationCount; i++) {
notNullInline(i); // TODO does compiler do any optimization here?
}
System.out.println("time inline : " + (System.nanoTime() - time));
}
我知道这不是进行基准测试的预期方式。现在我宁愿避免为这个简单的测试添加任何实用程序库(因为即使这样结果也很好),但我想知道编译器是否在这里做了任何优化?
【问题讨论】:
-
您是否要对注释的速度进行基准测试?
标签: java optimization benchmarking javac