运行未发布的基准测试,
ThreadLocal.get我的计算机上每次迭代大约需要35个周期。没什么。在Sun的实现中,
Thread将
ThreadLocals
映射为值的自定义线性探测哈希图。由于只能通过单个线程访问它,因此它可能非常快。
小对象的分配需要类似的周期数,尽管由于缓存耗尽,您可能会在紧密循环中得到较低的数字。
的建造
MessageDigest可能相对昂贵。它具有相当数量的状态,并且通过
ProviderSPI机制进行构造。您可以通过克隆或提供来进行优化
Provider。
仅仅因为缓存
ThreadLocal而不是创建可能更快,并不一定意味着系统性能会提高。您将有与GC相关的额外开销,这会降低一切。
除非您的应用程序使用率很高,否则您
MessageDigest可能需要考虑使用常规的线程安全缓存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)