java uuid.randomuuid_java – 为什么对UUID.randomUUID()的初始调用会变慢?

这是一次完成SecureRandom的初始化:

//from the source code of randomUUID

private static class Holder {

static final SecureRandom numberGenerator = new SecureRandom();

}

但这不是全部.那些零应该真的跳到你的脸上.因此操作耗时0毫秒;这是否意味着他们减少了?像几纳秒或你做错了什么?

有一个适当的工具来衡量这些东西,称为jmh.

@BenchmarkMode({ Mode.AverageTime,Mode.SingleShotTime })

@OutputTimeUnit(TimeUnit.MILLISECONDS)

@Warmup(iterations = 2,time = 2,timeUnit = TimeUnit.SECONDS)

@Measurement(iterations = 2,timeUnit = TimeUnit.SECONDS)

@State(Scope.Benchmark)

public class UUIDRandom {

public static void main(String[] args) throws RunnerException {

Options opt = new OptionsBuilder().include(UUIDRandom.class.getSimpleName()).build();

new Runner(opt).run();

}

@Benchmark

@Fork(1)

public UUID random() {

return UUID.randomUUID();

}

}

输出说:

Benchmark Mode Cnt score Error Units

UUIDRandom.random avgt 2 0.002 ms/op

UUIDRandom.random ss 2 0.094 ms/op

事实上,单次射击时间远远低于平均值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值