【问题标题】:keeping data in nested hash table is a good sign for both memory management and better performance将数据保存在嵌套哈希表中对于内存管理和更好的性能都是一个好兆头
【发布时间】:2012-12-18 14:30:26
【问题描述】:

我必须从您那里获得更好的意见或答案,以解决通过collection object/s性能问题处理数据的问题。

在这里,我从大约 5 到 60 万行 中获取数据,以将其保存到集合对象中,我需要非常具体地针对每个类别过滤器来获取所选数据,通常我采用 vector 如果我想获取任何确切的数据,我应该遍历它的每个索引。因此,它会降低我的表现。

我有一个计划,哈希表和自身作为另一个哈希表的值,类似它会以嵌套方式增长许多 hast 表。这是否有利于更好的解决方案,这是我的常见问题。

注意:在 oracle 数据库中,每行包含大约 15 到 17 列(许多是数组)。(这 60 万个条目)

【问题讨论】:

  • 不清楚你的问题是什么。你能改写吗?中间的粗体字体也非常分散注意力。请重新格式化!
  • 请考虑下次以更好的格式发布问题
  • 定义“更好”。我看不到您的第二个建议有任何积极的好处,而且还有很多额外的编码复杂性。我还会质疑为什么您要在内存中保留 50 万个项目。您应该为此使用数据库:这就是它的用途。

标签: java object collections garbage-collection


【解决方案1】:

为了回答标题中的问题,哈希表(HashtableHashMap)提供了良好的查找性能 (O(1)),但会消耗大量内存。除了键和值的空间之外,内存开销在每个条目 8 个字的范围内。

使用哈希表来加速记录查找是一个合理的权衡。但是,使用哈希表来表示记录的字段是一个坏主意。您最好使用自定义类,为表的每一列提供一个字段。

不过,EJP 的评论也是中肯的。您应该考虑对数据库执行查询。在许多方面,这比构建数据和索引的内存副本并实现您自己的查询基础架构要好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多