【发布时间】:2017-06-07 10:54:57
【问题描述】:
给定以下代码 sn-p,它生成 UUID.randomUUID(),我得到以下性能结果(以毫秒为单位):
public static void main(String[] args) {
long tmp = System.currentTimeMillis();
UUID.randomUUID();
tmp = printDiff(tmp);
UUID.randomUUID();
tmp = printDiff(tmp);
UUID.randomUUID();
tmp = printDiff(tmp);
UUID.randomUUID();
tmp = printDiff(tmp);
}
private static long printDiff(final long previousTimestamp) {
long tmp = System.currentTimeMillis();
System.out.printf("%s%n", tmp - previousTimestamp);
return tmp;
}
结果:
971
6
0
0
JDK: 1.8 操作系统: Windows 7
为什么只有第一次调用需要这么长时间? (近 1 秒!)
【问题讨论】:
-
@4castle 不是,这里只有 4 次调用,没有 JIT
-
由于网络接口扫描等原因,在 Windows 上 SecureRandom 的初始化可能非常慢。有关详细信息,请参阅 this question。
标签: java performance uuid