【发布时间】:2011-07-05 09:40:18
【问题描述】:
我正在为一段代码进行指标收集,并希望存储一组时间差异(类型原始long)以供以后分析
此集合的插入操作应尽可能高效,以尽量减少对结果的开销。
我首先测试了一个ConcurrentLinkedQueue<Long> 集合。这给出了最差的性能(可能是由于装箱/拆箱)
我目前已决定使用 同步 gnu.trove.TLongArrayList,对于 500 万长的数据集,它的速度几乎快 7 倍。
我们非常感谢任何对可能成为此用例基准测试的优秀候选者的其他馆藏库的建议。我查看了 guava API,但似乎找不到任何东西
【问题讨论】:
-
为什么需要线程安全的数据收集?是否有必要将所有值保存在一个集合中?在插入期间,您是否还尝试从集合中读取/删除?
-
@Salman 线程安全是一项要求,因为正在测试的代码是多线程的。不必将所有值保存在一个集合中。请随时提出替代数据结构的建议。不需要移除。读取发生在结果分析期间的测试后,因此它们的效率无关紧要。
-
你也可以发布一些数字吗?例如,当您说它的性能*最差时,需要多长时间?小时、分钟、秒?
标签: java collections guava