【发布时间】:2016-01-16 21:34:50
【问题描述】:
在我目前正在开发的一个应用程序中,最耗时的功能之一是 TreeMap 中的 put() 操作(大约 30% 的运行时间)。
这些对put() 的调用通常是从另一个函数按顺序调用的,因此put() 函数调用将使用有序键。这当然会导致 RB-Tree 中的大量重新平衡,这有助于运行时。
有什么(简单的)方法可以加速我的应用程序吗?
【问题讨论】:
-
你必须使用
TreeMap吗?HashMap在许多情况下要快一个数量级,因为它的平均插入时间为 O(1)。 -
密钥类型是什么?
-
是的,它必须是 TreeMap,尤其是 floor/ceilingEntry 和 floor/ceilingKey 很重要。键是长的
-
如果您将盒装 Longs 存储在地图中,那么提高性能的最简单方法是更改为专门的集合。我没能找到一个库来实现专门用于原始类型的 TreeMap,但你自己的应该不会太难。
-
是的,我已经搜索过了,但只找到了普通地图的原始实现(例如 Colt、Trove),而不是 SortedMaps。
标签: java performance treemap