机器学习和生物信息学实验室联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9772|回复: 21
打印 上一主题 下一主题

求助!!!

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-10-5 12:10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有谁对于处理IO方面有很深的了解?

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

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

谁比较了解这方面的东西,深刻求教!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

沙发
发表于 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%都是在写入和读取索引上了,所以想知道怎么能快速的存储一个数据结构,还能保证他的完整性。

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

使用道具 举报

5#
发表于 2012-10-5 12:29:00 | 只看该作者
Java Large Files Disk IO Performance
http://stackoverflow.com/questio ... disk-io-performance
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

7#
 楼主| 发表于 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,但是还是很慢~
回复 支持 反对

使用道具 举报

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

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

--

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

使用道具 举报

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

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

使用道具 举报

10#
 楼主| 发表于 2012-10-5 12:40:27 | 只看该作者
xmubingo 发表于 2012-10-5 12:36
你的索引和搜索是怎么建立?为啥需要从硬盘上读写索引?

--

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

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

使用道具 举报

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

本版积分规则

机器学习和生物信息学实验室联盟  

GMT+8, 2024-11-1 19:21 , Processed in 0.068021 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表