日期:2014-05-17  浏览次数:21186 次

记事本的"替换"过程是怎么样的
好像比较大的文件,替换起来就特别的慢,而且是刚开始很慢,越到后面越快,最后的一部分就是瞬间替换掉

那么,它的替换过程是怎么样的呢,有人知道吗

------解决方案--------------------
应该是逐个查找、粘贴
------解决方案--------------------
可以使用第三方命令行程序来处理大文件,比如:sed.exe、awk.exe等。
------解决方案--------------------
可以肯定的一点就是,记事本是没有创建新线程来执行查找替换,所以在替换内容比较大的文件时会造成自身无响应,但是并没有死,因此不建议使用记事本来替换大文件。至于楼主说的越来越快,我个人认为是你的感觉误差而已。
------解决方案--------------------
你是怎么知道越来越快的啊-
------解决方案--------------------
应该就是简单的逐个查找,替换
------解决方案--------------------
探讨
不是的,是真的越来越快,如果一个文件比较大,里面有好多东西都要替换,那么前面刚刚替换时,会是一秒一个差不多,然后到中间时就是比较快了,到最后就是和一些小的文本文件一样,瞬间替换掉剩下的所有了

------解决方案--------------------
记事本使用的基本内存比较小,据说只有64K。如果替换的字节比较多,开始时资源吃紧,就来不及刷新了。
------解决方案--------------------
我猜是不是这样:

在最开始执行替换的时候,记事本利用VirtualAlloc()要将虚拟内存提交到RAM中,如果需要替换的地方比较多,那么需要提交的RAM也就比较多,假设windows的某个替换操作是Replace(),VirtualAlloc()和Replace()同时在执行,所以就要卡点,到后来,VirtualAlloc()将需要的RAM全部提交完毕,这个时候VirtualAlloc()函数就不再执行,Replace()一个函数在执行,所以查找就显得快点了。
------解决方案--------------------
把记事本的尺寸放到尽可能小,然后就快了,主要是在替换的过程中对屏幕内容刷新导致的速度慢,这个解释虽然有些荒谬,但是确实实用
------解决方案--------------------
可能刚开始文件全部读入内存,替换比较大的文件,比较慢,随着替换,释放被替换的内存,是操作变得容易,到后来最快