问题标签 [trove4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - LinkedHashMap 内存消耗
用户上传了一个包含 100 万字的巨大文件。我解析文件并将文件的每一行放入LinkedHashMap<Integer, String>
.
我需要 O(1) 按键访问和删除。此外,我需要保留访问顺序,从任何位置进行迭代和排序。
内存消耗是巨大的。我启用了 Java 8 中出现String
的重复数据删除功能,但事实证明它LinkedHashMap
消耗了大部分内存。
我发现它LinkedHashMap.Entry
消耗 40 个字节,但只有 2 个指针 - 一个用于下一个条目,一个用于上一个条目。我认为 1 指针应该是 64 位或 32 位。如果我将 409,405,320(字节)除以 6,823,422(条目数),则购买每个条目有 60 个字节。
我想我不需要前一个指针,下一个指针应该足以保持秩序。为什么会LinkedHashMap
消耗这么多内存?如何减少内存消耗?
java - 使用标准 Java HashMap(与 Trove THashMap 相比)会导致非 HashMap 代码运行速度变慢
我使用 HashMap 缓存通过递归算法计算的大约 200 万个值。我使用HashMap<Integer, Double>
Collections Framework 或TIntDoubleHashMap
Trove 库中的一个,由boolean useTrove
变量控制,如下面的代码所示。
我确实希望 Trove 库更快,因为它避免了自动装箱等。事实上,put()
和get()
调用需要大约 300 毫秒来运行(总共),THashMap
而HashMap<>
.
现在,我的整体程序运行时间约为 2.8 秒,使用THashMap
6.7 秒HashMap<>
。这种差异不能仅用put()
andget()
调用增加的运行时间来解释。
我怀疑这种大幅增加的运行时间
HashMap<>
是由于这种实现的内存效率很低,因为每个 int/double 都需要装箱到一个对象中,而这种增加的内存使用会导致程序其他部分的缓存未命中。这种解释是否有意义,我如何确认/拒绝这个假设?一般来说,我如何探索此类场景的算法优化?分析算法并不能轻易指出
HashMap<>
是罪魁祸首,至少如果仅考虑 CPU 时间的话。这仅仅是提前知道内存使用需要优先考虑内存需求的问题吗?
完整代码如下。
java - gnu.trove 类抛出 java.lang.ArithmeticException:除以零
我的应用程序使用 gnu.trove 2.0.3 版。最近它在 gnu.trove 库代码的不同区域抛出除以零异常
例如:1。
2.
3.
这是在一种情况下引发除以零异常的应用程序代码片段:
从堆栈跟踪中,我查看了在这些库类中引发这些异常的代码行: 1. 在 gnu.trove.TIntHash.index(TIntHash.java:201)
2. 在 gnu.trove.TIntHash.insertionIndex(TIntHash.java:271 )
3. 在 gnu.trove.TPrimitiveHash.capacity(TPrimitiveHash.java:99)
如您所见,这些行不做任何划分。
那么为什么会抛出这些除以零的异常呢?gnu.trove 类中的哪些场景可以抛出这些 java.lang.ArithmeticException:代码中除以零异常?
java - 在中央找不到工件 gnu.trove:trove:jar:3.0.3 (https://repo.maven.apache.org/maven2)
我正在尝试下载 gnu.trove 库,我有这个依赖:
但我得到这个错误:
为什么?我应该添加一些其他存储库pom.xml
吗?现在我列出了这个存储库:
java - 如何在我的 Gradle 项目中使用 Trove4j 库
您好,我想知道如何将 Trove4j 库导入到我的 gradle 项目中。
谢谢你。
我的 build.gradle 文件
java - TLongArrayList 比 long[] 有什么优势
我看到在某些地方使用数据结构 TLongArrayList 而不是长基元数组。我想问一下在 long[] 上使用 TLongArrayList 有什么好处?