|
1
9
|
|
|
2
11
在磁盘上放置非常大的哈希的最简单方法是 BerkeleyDB . 它速度快、经过时间测试且坚如磐石,CPAN模块提供了一个绑定的API。这意味着您可以像在内存中使用数据结构一样继续使用散列,但它将自动通过BerkeleyDB读写到磁盘。 |
|
|
3
3
好吧,我接受了Sinan_n_¼R的建议(谢谢!)并创建了一个sqlite数据库,重新运行我的测试程序,将通过csv文件获取数据与从sqlite数据库获取数据进行比较:
csv_xs的总数为34.67%,而sqlite的总数为20.63%,这比我以前尝试过的可存储解决方案要好一些。但是,这不是一个公平的比较,因为与csv_xs解决方案相比,我必须加载 整个的 csv文件,但是有了sqlite接口,我可以加载我想要的部分。因此,在实践中,我期望比这个简单的测试显示出更多的改进。 我没有尝试用BerkeleyDB(抱歉,Friedo)代替sqlite,主要是因为在我参与sqlite的试用之前,我没有看到这个建议。设置测试是一项非常重要的任务,因为我几乎从来没有机会使用SQL数据库。 不过,解决方案显然是将所有数据加载到数据库中,并通过DBI模块进行访问。谢谢大家的帮助。非常感谢所有的回应。 |
|
|
4
2
每次运行脚本时,最好不要将整个列表拖到内存中。使用磁盘上的数据库将允许您这样做。如果出于某种原因,每次运行时都必须触摸csv文件中的每个条目,我可能建议将其存储在RAM磁盘上,而不是物理磁盘上。它显然适合内存,我认为通过更改存储它的磁盘格式,您不会得到很大的改进。唯一真正加快速度的方法就是把它储存在一个更快的媒介上。 |
|
|
5
1
如果只需要访问每个脚本中的部分数据,而不需要访问全部数据, DBM::Deep 可能是你最好的选择。 无论您做什么,磁盘/IO都可能是您最大的瓶颈。也许您可以使用一个数据提供程序将所有数据保存在一个mmap缓存中——使用类似的 Sys::Mmap::Simple 我从来没有必要做这种事,所以我没有其他的东西可以提供。 |
|
|
ViSa · 如何在python中分隔存储在变量中的文本以创建数据帧? 1 年前 |
|
|
Joan Lopez · 从csv中提取的数据获得平均值 2 年前 |
|
|
Chinmaya Tewari · 创建新csv文件时权限被拒绝 2 年前 |
|
|
Parker Clark · 通过Bash操作csv中的特定列? 2 年前 |
|
|
James Black · 如何基于列删除CSV文件中重复的行 2 年前 |