使用 GNU trove 进行整数的 SortedSet
出于性能原因,我正在将一些代码迁移到 GNU trove。
但是,我确实有一些 TreeSet,其中我需要相当快的更新和查找以及排序迭代 - TreeSet 的主要用例。当然,我会回顾一下使用情况,并检查我是否可以使用 HashSet 同样好。
GNU Trove 中对 SortedSet 的合适替代是什么?
谢谢。
I'm migrating some code over to GNU trove for performance reasons.
However, I do have some TreeSets, where I need rather fast update and lookups along with a sorted iteration - the primary use case of a TreeSet. Of course I will go over the use and check if I can maybe live with a HashSet just as good.
What is the appropriate replacement from GNU Trove for a SortedSet?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更新:我在 Sourceforge 上的 Trove 中发现了相关功能请求: http://sourceforge.net/tracker/index.php?func=detail&aid=1631704&group_id=39235&atid=424685
到目前为止似乎还没有 SortedSet ,而 Trove 的好处在这里似乎没那么大:它会为原始类型节省一些内存(并避免装箱),但是数据的算法组织可能会是相同的,并且仍然需要入口对象。
更新#2:
对于许多用例(取决于您的写入访问模式),您应该能够通过仅使用
TIntArrayList
并使用binarySearch 方法(假设数组已排序!)
插入已排序数组的时间复杂度为 O(n),因此当您对数组执行大量修改并在之后查询时,这不是一个选项每个。但如果您的更改是批量添加,则只需在每次更新后调用
sort
即可获得令人惊讶的良好性能!Update: I found a related feature request in Trove on Sourceforge: http://sourceforge.net/tracker/index.php?func=detail&aid=1631704&group_id=39235&atid=424685
There doesn't seem to be a SortedSet so far, and the benefits of Trove seem to be less big here: it will save some memory for primitive types (and avoid boxing), but the algorithmic organization of the data will likely be the same, and it will still need entry objects.
Update #2:
For many use cases - depending on your write access patterns -, you should be able to get a decent performance by just using a
TIntArrayList
and using thebinarySearch
method for lookup (which assumes the array to be sorted!)Inserting into a sorted array is O(n), so this is not an option when you perform a ton of modifications to the array, and query after each. But if your changes are bulk additions, just calling
sort
after each update should give you a surprisingly good performance!