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

smallfool 2003-03-06 11:33:39
现有一程序,定期(频率很高)刷新共享内存和文件,但由于文件操作很费时,导致效率很低,而且经常当机。想优化一下代码,请高手给一些建议。
...全文
42 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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通讯。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧