内容:
我正在使用netty并定义了一个处理程序,以便对传入/传出的流量进行计数和分类。为此,我使用了一个如下的enumMap:
EnumMap<MyEnum, AtomicLong>
但是现在我已经意识到,只有一个线程在操纵值(以前我认为它是多个线程,netty似乎保证每个通道一个线程)。这意味着不需要AtomicLong。 但是,由于AtomicLong是原始long的包装器,而Long是不可变的类型,因此我有理由认为仅将AtomicLong交换为Long会降低性能。
关于这个有什么想法吗?
我可能应该做的是移至int并删除整个enumMap内容。
BR
塞巴斯蒂安
最佳答案
假设您只有一个线程:
如果AtomicLong避免了对象的创建,那么它比使用Long可以更快。
再次快速是使用long[]
或根本不使用像TObjectLongHashMap这样的集合的对象