gpt4 book ai didi

java - 我是否应该在 Android 应用程序上将缓冲读取更改为内存中/标记化以读取 100,000 行文件?

转载 作者:行者123 更新时间:2023-12-01 15:48:19 26 4
gpt4 key购买 nike

目前,我正在使用缓冲读取将包含 100,000 行的文本文件加载到 SortedMap 中。我是否应该放弃这种方法,而是将整个文件加载到内存中,然后通过换行标记到 SortedMap 中?请注意,我必须解析每一行以提取键并创建一个每个键的支持对象,然后将其插入到 SortedMap 中。该文件大小小于 4MB,符合 Android 内存中文件大小限制。我想知道切换到内存方法是否值得,或者所获得的加速是否不值得。

此外,HashMap 会比 SortedMap 快很多吗?我只需要按键查找,并且如果需要的话可以在没有排序键的情况下生存,但如果有的话那就太好了。如果有比我正在使用的更好的结构,请告诉我,如果您有任何与此问题相关的 Android 速度提示,也请提及。

--罗施勒

最佳答案

我不清楚为什么将整个文件加载到内存中然后标记化会更简单。一次读取一行并以这种方式解析它非常简单,不是吗?虽然我完全赞成一次性加载所有内容,因为它真正使事情变得更简单,但我看不出这里会变得更加容易。

至于 SortedMapHashMap - 如果没有很多哈希冲突,通常 HashMap 查找的时间复杂度为 O(1),但是如果没有相等的元素,SortedMap 查找的时间复杂度仅为 O(log n)。与对象模型中的哈希计算相比,比较的成本有多高?对于 100,000 个元素,每次查找将进行大约 16-17 次比较。最终,我不想猜测哪个会更快 - 您应该测试它,就像所有性能选项一样。也看看内存使用情况...我希望 SortedMap 使用更少的内存,但我很容易错。

关于java - 我是否应该在 Android 应用程序上将缓冲读取更改为内存中/标记化以读取 100,000 行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com