高分求教:如果有效减少I/O操作。

smallfool 北京秀迈时空信息技术有限公司 CTO  2003-03-06 11:33:39
现有一程序,定期(频率很高)刷新共享内存和文件,但由于文件操作很费时,导致效率很低,而且经常当机。想优化一下代码,请高手给一些建议。
...全文
9 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallfool 2003-05-14
谢谢大家的参与,散分。请查收。
回复
bfbd 2003-03-08
不一定要全面备份吧,
再审核一下你的数据变化,
备份时只把变化记录下来,而不是完全数据备份,
必要的时候再全面备份。

参考一下数据库的备份策略:
每天备份日志文件,
每周/每月备份数据文件一次。


回复
smallfool 2003-03-08
呵呵,一般情况下,我的程序只是导致自己会终止退出,还很少会让系统也会死掉。
回复
GoldenSword 2003-03-07
把文件内容全部读到内存中去,需要的时候再写回去
回复
bhw98 2003-03-07
ramdisk是好东东,不过你的程序不能导致死机,否则就没用了!
回复
smallfool 2003-03-07
压缩倒是个好主意。谢谢。
回复
harry202 2003-03-07
一定要存盘,没有太快的方法,看看windows内存页面切换,硬盘咔咔响就知道了。
尽量减少存盘次数;
压缩存盘数据;
使用完成端口(这个是windows最高效率的I/O操作了),或者简单点,就开个线程做好了。
回复
smallfool 2003-03-07
呵呵,你老先生说话比较直率。不过我觉得程序稳定性和很多因素有关的,不一定都市程序bug的原因吧?
回复
smallfool 2003-03-07
大家对ramdisk有什么看法?
回复
rtdb 2003-03-07
那你这是舍本求未了。
重点还应放在查找系统BUG, 让系统稳定下来。
回复
smallfool 2003-03-07
呵呵,大家的建议都还不错。不过我想说的是,其实本没有必要进行磁盘操作。只是因为种种原因,程序和系统不够稳定,所以有必要对共享内存中的数据进行备份。这样就存在着这个频繁磁盘操作的问题。由于频率比较高,而且要备份的数据比较大,所以效率也就很低。所以想请教高手有什么好的办法能加快磁盘操作。
回复
harry202 2003-03-07
在内存中设置标志位,标记文件内容是否被改变,如没有改变,不刷新文件。
另外,你的文件I/O可以使用完成端口,如果是大量文件,效率会提高很多。
回复
rtdb 2003-03-07
定期(频率很高)刷新共享内存和文件

频率很高地刷新共享内存很正常,
但频率很高地写文件就不好了,

应将写文件的周期降下来。
回复
mldds 2003-03-07
可将文件操作改成TCP/IP通讯。
回复
发动态
发帖子
图形处理/算法
创建于2007-09-28

1.9w+

社区成员

VC/MFC 图形处理/算法
申请成为版主
社区公告
暂无公告