| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:写入文件是程序崩溃怎么办???
只看楼主 加入收藏
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
结帖率:92.31%
收藏
已结贴  问题点数:44 回复次数:8 
写入文件是程序崩溃怎么办???
最近做了一个题目,读取文件内容,提取其中的一部分,写到另一个文件中。原文件是300多M的二进制文件,读取没有错误,我先将一部分数据提取出来,能得到正确结果,输出文件是20多M文本文件。然后打算将数据全部提取出来,结果程序运行时间变得很长,并且中途出错退出了,查看得到的文本文件,有1.29G,不知道问什么不能执行完。


我读的是SEGY格式的.sgy文件,输出的是.grd的文本文件。

读取的数据是暂存在二维数据中的,可能是太大了,但我觉得这应该只是运行时间长一点而已,为什么不能运行成功呢?求大神指点一下,谢谢了
搜索更多相关主题的帖子: 文本文件 二进制 
2013-02-28 15:08
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
我有的分都给了
2013-02-28 15:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:44 
32位程序的数据区只有2G。不要把企图把数据一次性全部调入内存中,你的设计模式错误,小数据量时测试成功不等于大数据量也成功,修改读写的模式吧。

授人以渔,不授人以鱼。
2013-02-28 15:11
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
动态分配的内存,我分批写入可以吗???
2013-02-28 15:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
当然是要分批写入了。32位程序中,用什么分配都在进程固有的4G虚拟空间内分配,数据区最大是2G,这与分配模式无关。分批读写,系统和程序自己会利用缓冲加速,不要以为全部读入到内存中会比缓冲模式快,不是那样的。以前在16位时代,再大的文件拷贝也不成问题,都是分批读写的,哪有人全部调入内存之理,有再多的内存,也不应这样做。

授人以渔,不授人以鱼。
2013-02-28 15:21
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
回复 4楼 卡卡罗特wang
大数据肯定要分批次读写啊,怕麻烦就去找个内存数据库,程序会简单不少。

2013-02-28 15:56
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
回复 5楼 TonyDeng
哦,谢谢了。

像这样的大文件的读写,怎么才能提高程序的运行速度,能不能给点建议。。。


或者说程序最耗时间的部分是哪里,文件的打开关闭,文件指针的定位是不是太多了不好???
2013-02-28 16:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
瓶颈在磁盘的读写速度,那是铁打的,怎么都快不来(有时系统报告复制文件完毕,但磁盘仍然在亮,那表示缓冲在起作用,实际还没完,骗你完了而已,最终还是那么多时间)。C函数库是专家测试过的,它默认的缓冲区足够应付大多数应用,一般不要刻意改它,那其实很小,具体多大我忘了,在以前16位机时代8K已经起反作用了,现在新的系统有各种缓冲机制,语言库会与系统平台配合,你自己去调整反而弄巧反拙。一般来说,如果你的数据是有一条一条记录的,就按记录逐条读、写即可,在程序的使用过程中观察效果,只有到真的无法接受时,才要去考虑调整。调整这东西,跟很多因素有关的,除了系统,还跟机器配置有关,与当前同时运行的程序也有关,与到底有多少空闲物理内存也有关,变化一下,结论也不同的。

授人以渔,不授人以鱼。
2013-02-28 16:18
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
回复 8楼 TonyDeng
soga,谢谢了
2013-02-28 16:22
快速回复:写入文件是程序崩溃怎么办???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016793 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved