大家讨论下,为什么记事打开大文件时会很慢,内部是怎么实现的

kei_lin 2009-05-11 04:06:26
RT
...全文
236 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2009-05-12
  • 打赏
  • 举报
回复
只读的话,分片读取显示应该会很快
pathuang68 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 goodname 的回复:]
大文件可以采用内存映射文件的办法
[/Quote]
深入一步:
内存映射的办法,可以带来操作上的灵活性,但仅仅使用它,对提高性能上来说,估计用处有限。应在内存映射的基础上,开几个线程分段读取。
goodname 2009-05-12
  • 打赏
  • 举报
回复
大文件可以采用内存映射文件的办法
BuleRiver 2009-05-12
  • 打赏
  • 举报
回复
可以像word一样,我觉得word就是边看边显示的,比如,如果有100页,你打开的时候可能只显示了几页,等过一会才会全部显示完
kei_lin 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hairetz 的回复:]
文件太大,怎么读,都是慢。
[/Quote]
哪到也是,写的时候加不了速的.
  • 打赏
  • 举报
回复
文件太大,怎么读,都是慢。
woshichangjiu 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kei_lin 的回复:]
哦,今天面试是被别人问到这个问题,一时没想出来,我想解决的办法就开两个线程(一个读出,一个写入),对两个缓冲区进读写,当第一缓冲写满,则唤醒读出线程, 当第一缓冲末读完而第二个缓冲被读满时则写入线程阻塞,直到第一个缓冲被读出线程释放.如此循环.

因为文件写入时临界资源,不知道增中缓冲区的个数能不能提高效率.
[/Quote]

估计就是这个样子。从硬盘读入数据入缓冲区,再从缓冲区读出来显示在记事本上。
cyldf 2009-05-11
  • 打赏
  • 举报
回复
可以一次读取一部分内容,记录下次要读取的位置
kei_lin 2009-05-11
  • 打赏
  • 举报
回复
哦,今天面试是被别人问到这个问题,一时没想出来,我想解决的办法就开两个线程(一个读出,一个写入),对两个缓冲区进读写,当第一缓冲写满,则唤醒读出线程, 当第一缓冲末读完而第二个缓冲被读满时则写入线程阻塞,直到第一个缓冲被读出线程释放.如此循环.

因为文件写入时临界资源,不知道增中缓冲区的个数能不能提高效率.
lingyin55 2009-05-11
  • 打赏
  • 举报
回复
记事本应该是打开文件后先把所有的内容写进内存,这样大文件就比较慢。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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