机器学习和生物信息学实验室论坛联盟MAchine Learning And Bioinformatics, MALAB
查看: 14227|回复: 21

求助!!!

 火.. [复制链接]
发表于 2012-10-5 12:10:45 | 显示全部楼层 |阅读模式
有谁对于处理IO方面有很深的了解?

我这里有一个数据结构,想要存储到硬盘上,要求还能保证数据结构的完整性,load进内存的时候可以直接用,但是怎么能把他最快的写入到文件中呢?当然该数据结构很大,最大的时候会有2^32-1的长度

另外还有一个文件中一个字符串有120万行,每行大概30个字符左右,我怎么把他快速load进内存,以便进一步处理

谁比较了解这方面的东西,深刻求教!!!
回复

使用道具 举报

发表于 2012-10-5 12:22:54 | 显示全部楼层
第一个问题,序列化写呢?

第二个问题,你之前不是做过IO测试么?读进花了多少时间?你可以把数据集和花的时间贴一下,其它人试试看还有没有更好的办法。
回复

使用道具 举报

发表于 2012-10-5 12:24:52 | 显示全部楼层
显然,我没有对处理I/O有很深入了解。
看描述,和StringIO的应用场景类似,此外,不妨也采用效率最好的bz2模块试试。
回复

使用道具 举报

 楼主| 发表于 2012-10-5 12:28:46 | 显示全部楼层
xmubingo 发表于 2012-10-5 12:22
第一个问题,序列化写呢?

第二个问题,你之前不是做过IO测试么?读进花了多少时间?你可以把数据集和花 ...

我设计一个索引结构,我测试了一下,索引和搜索花费的时间有90%都是在写入和读取索引上了,所以想知道怎么能快速的存储一个数据结构,还能保证他的完整性。

第二个问题,虽然之前测试过,但那个针对于没有目的的文件读取,这里已经是特定的序列串了,读取时候速度超慢!
回复

使用道具 举报

发表于 2012-10-5 12:29:00 | 显示全部楼层
Java Large Files Disk IO Performance
http://stackoverflow.com/questio ... disk-io-performance
回复

使用道具 举报

 楼主| 发表于 2012-10-5 12:29:45 | 显示全部楼层
chenwq 发表于 2012-10-5 12:24
显然,我没有对处理I/O有很深入了解。
看描述,和StringIO的应用场景类似,此外,不妨也采用效率最好的bz2 ...

现在就是无法把一个完整的大数据结构快速的保存和读取,如果这两个方面解决了,那搜索起来就是唰唰的~
回复

使用道具 举报

 楼主| 发表于 2012-10-5 12:35:16 | 显示全部楼层
xmubingo 发表于 2012-10-5 12:29
Java Large Files Disk IO Performance
http://stackoverflow.com/questions/964332/java-large-files-dis ...

他这些都貌似只是把内容写入硬盘就OK了,我还想保存完整的数据结构,这样搜索的时候,就是直接映射读取,现在我就知道一个writeObject,但是还是很慢~
回复

使用道具 举报

发表于 2012-10-5 12:36:28 | 显示全部楼层
hsc 发表于 2012-10-5 12:28
我设计一个索引结构,我测试了一下,索引和搜索花费的时间有90%都是在写入和读取索引上了,所以想知道怎么 ...

你的索引和搜索是怎么建立?为啥需要从硬盘上读写索引?

--

你试试加大BufferedReader的buffer大小。
不行的话就多线程试试,看我发的那个连接
回复

使用道具 举报

发表于 2012-10-5 12:37:21 | 显示全部楼层
hsc 发表于 2012-10-5 12:35
他这些都貌似只是把内容写入硬盘就OK了,我还想保存完整的数据结构,这样搜索的时候,就是直接映射读取, ...

那个链接可以用来读取你的120w行的数据
回复

使用道具 举报

 楼主| 发表于 2012-10-5 12:40:27 | 显示全部楼层
xmubingo 发表于 2012-10-5 12:36
你的索引和搜索是怎么建立?为啥需要从硬盘上读写索引?

--

现在当然不需要,但是如果对于稍微大一点的文件来说,比如说1G的序列,那我拆分成子串也许就是10G,这样的话,内存是放不下的,所以必须得在硬盘上备份,这样的话,一次建索引,以后都能搜索了。

我设计的索引结构暂时分三块,第一个是原有序列的索引,第二个是子串序列的索引,第三个是子串序列索引的索引,现在第一个和第三个还好,关键是第二个就很大,我把子串进行编码,编码值就是他的位置,类似于hash表,这样的话,他的长度是巨大的,那么把这个完整的结构存储到硬盘上,我读取时候,直接地址映射搜索,很快就能完成,所以现在就是写入和读取的问题了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注公众号
机器学习和生物信息学实验室联盟

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部