大数据文件的读取和操作

zhangzexdu 发布于 2013/04/23 08:52
阅读 272
收藏 1
这是一个关于后缀数组的问题,就是在后缀数组的构造过程中,他需要将整个文件都读取到内存中,才能实现后缀数组的构造,现在的问题是如何在内存中分配这样一块空间(文件的大小在几百兆)。因为在后缀数组的构造过程中需要比所读取的文件的空间大至少3-5的空间,所以这个空间问题怎么解决。网友们指教,谢谢!
加载中
0
魔力猫
魔力猫
有问题吗?现在的机器就是占用几个G的内存也没什么呀。
0
z
zhangzexdu
在读取这样的文件(几百兆)时,这个内存如何分配。
0
z
zhangzexdu
对于这个后缀数组它要同时将所有的数据都读入,才能构造后缀数组的。谢谢。
0
朱静程
朱静程
这种程序的一般处理方法是,用定长的形式存储字段内容。在需要的时候,用随机方式读取指定数据。
朱静程
朱静程
回复 @zhangzexdu : 定长是指字段存储占有的空间长度固定,相当于char(50)之类的,这个有可能会浪费磁盘空间,但是效率上会大幅提升。还有读取数据的时候,不是把文件一下子读出来,而是用数据流的形式,跳到指定位置,然后读取。读取完之后再关闭数据流。
z
zhangzexdu
我现在的问题是这个定长怎么设置,对于不同大小的文件,这个定长是不一定的,并且在构造后缀数组的时候,它需要将整个字符串都读入内存,因为在构造后缀数组的时候,对每一个字符的后缀排序,在排序中就需要所有的字符串的后缀。
0
感冒九十九
感冒九十九
分块读取可以不,每次读取个几分之一
z
zhangzexdu
因为这个要构造后缀数组,就是将一个文本看成是整个的一个字符串,从每个字符开始到字符窜结束这个子字符串,对所有的这些子字符窜排序的过程,因为在这个过程中需要前后子字符串之间的关系,所以不能一块一块的读取。
返回顶部
顶部