数组列表和哈希集内存分配奇怪的测试结果
我受到以下主题的启发:List 和 Set 之间的性能和内存分配比较,以实际运行一些测试并测量 和 之间的性能差异。ArrayList
HashSet
在提到的主题中,投票最多的答案引起了我的兴趣(链接),说:
对于相同数量的元素,HashSet 消耗的内存大约是 ArrayList 的 5.5 倍
在ScalaMeter的帮助下,我想确保这一点。
我做了两个简单的测试,将从元素添加到两个和.将初始大小设置为最大值不会更改结果。我用两种类型测试了这些集合:10000
100000
ArrayList
HashSet
-
Int
(将连续数字 0 设置为 100000) -
String
(使用Apache放置随机字符串RandomStringUtils
)
该代码可在此处的存储库中找到。
运行这些,给了我这个结果:
- X 轴 - 大小 - 集合>大小
- Y 轴 - 值 -> kB 的使用量
问题:
引用答案中提到的理论发生了什么变化?这是假的吗?或者可能是我这边有一些错误?
谢谢:)!
@andrzej答案后更新我再次更新了代码(和存储库)。结果越来越好,但结果仍然没有5.5倍的差异。我现在正在检查更多的东西。