简单≠快速

简单≠快速

我以为记事本作为最简单的文本阅读器也是最快的,但我发现当我尝试打开非常大的文本文件时,写字板打开它们的速度要快得多。

这可能是什么原因呢?

答案1

简单≠快速

像记事本这样的普通基本编辑器可能过于简单,无法处理复杂的情况,因为它仅用于简单使用的情况。

A聪明的编辑器将确定许多因素来决定哪种策略是最佳选择。例如,除了读取文件逐行或者逐字节像一个愚蠢的编辑它会加载到大缓冲区中以便以后快速阅读。或者也可以将文件映射到内存。但是缓冲区或映射区域应该有多大呢?这取决于具体情况,编辑器也应该考虑到这一点。智能编辑器不会将整个几 GB 的文件加载到内存中,然后因为根本放不下而卡住,而是只检查文件大小并仅加载当前正在查看的部分,然后在需要时再查找。

所有这些都需要更加精心的设计,并且包含很多记事本中不存在的逻辑,因为它的源代码十年来没有太大变化。

为什么 Vim 打开大文件的速度比其他一些文本编辑器更快?

更新

Windows 10 build 17713 对记事本进行了大量更改,其中之一就是改进了记事本在处理大文件时的行为

  • 我们改进了使用记事本打开大文件时的性能。
  • 记事本现在支持Ctrl+Backspace删除前一个单词。
  • 箭头键现在可以正确地先取消选择文本,然后移动光标。
  • 在记事本中保存文件时,行号和列号不再重置为 1。
  • 记事本现在可以正确显示屏幕上无法完全显示的行。

现在还有 Unix 行尾支持、文本缩放功能和自动换行模式的状态栏

宣布 Windows 10 Insider Preview Build 17713

还证实记事本确实使用内存映射文件,但这只是开始部分。困难的是解析行并进行换行。即使是 Notepad++ 在打开超大文件时也很糟糕。参见大型 .txt 的性能较差

答案2

记事本只不过是 Windows 编辑控件的外壳。它专为编辑少量文本而设计,并针对此进行了优化。早期版本必须在资源非常有限的系统中运行,而这些优化对于这些系统来说非常重要。Windows 95 的官方要求仅为 4 MB RAM,并且由于技术原因,编辑控件被限制为 64K 文本。NT 平台没有那么受限,但它也必须在有限的资源下工作。

设计一个适用于小文件的编辑器相对简单。设计一个可以高效处理大文件的编辑器绝非易事,需要大量复杂的代码。小型和简单的编辑器无法很好地处理大文件。所有这些编辑器(不仅仅是记事本)都会在处理多 GB 的文件时出现问题,即使是在功能强大的计算机上。一些高级编辑器可以轻松处理这种情况。

记事本仍然可以很好地完成其预期用途,多年来几乎没有发生过任何变化。Windows 编辑控件在大多数 Windows 应用程序中都以某种形式使用,因此如果进行重大更改,则出现不兼容的可能性很大。为什么要冒险进行不必要的更改?经验表明,最微不足道的更改也会导致应用程序不兼容

如果您需要编辑较大的文件,还有许多其他编辑器可用。记事本从来就不是为此设计的。

相关内容