问题描述
Ctrl+F(MacOS 上的 Cmd+F)是用于在文档中查找字符串实例的标准键盘快捷键。我最近一直在非常大的文档中使用这个命令,大约有数百 MB 的 ASCII 字符。在 Ubuntu 上的默认文本编辑器中,我注意到查找工作通常需要很长时间,有时似乎只是失败。这让我想知道引擎盖下发生了什么。当我执行 Ctrl+F 时运行的算法的优化程度如何?对于长文件中的长查询字符串,天真的逐字符搜索与来自计算基因组学的 BLAST 算法之类的东西在运行时上的差异可能是巨大的。另外,当我在文本编辑器中使用 VSCode 和 Chrome 时,Ctrl+F 会调用相同的底层代码,还是不同的应用程序使用不同的实现?
解决方法
我一直在使用 VS Code 和 Np++ 进行编码,我也有同样的疑问。
我相信我们输入的每个字母和字符都会被编辑器/软件(word、浏览器或任何)在后台索引。当我们尝试使用 ctrl + f 查找字符串时,它只会突出显示所有位置的出现。 这也可能是代码编辑器能够在声明新变量或调用函数时提供即时建议的原因。
索引是软件中的一项简单任务。甚至浏览器也可以在加载页面后立即存储所有索引。所以我认为没有复杂的算法。但是搜索速度感觉像是发生了大事。