今天做项目用到了UUID,查看介绍挺复杂的,于是测试了一下。
有如下现象:
第一次生成需要 15-25 毫秒。 差不多平均20毫秒。但是我用for循环1000次,结果很意外。只有第一次差不多需要20毫秒,而后面的所有次数都是0毫秒。我猜想是因为UUID生成的时候需要读取很多系统数据,第一次读取的时候被缓存,后面会非常快。
经过测试,数据跨越半个地球,从一边到对面差不多要280毫秒。每次数据请求就需要生成一个UUID,显然UUID.randomUUID() 的性能是无法接受的。
不知道你有没有好的替换方案?
经过我测试,AtomicLong.incrementeAndGet() 和 BigInteger.add(BigInteger big) 都不到0毫秒就能生成,非常快。
因为每次测试结果悬殊很大,所以想找更精确的办法:点击打开链接 http://blog.csdn.net/paul_lh/article/details/6419982
上面介绍了使用系统获得毫秒会有问题,然后我使用纳秒测试结果差不多。可能这个UUID本来就很慢吧。
我的系统是ubuntu 12.04 LTS.