Everything是一个文件搜索程序。由于它的作者没有发布源代码,我想知道它是如何工作的。
- 它是如何如此高效地索引文件的?
- 它使用哪些数据结构来进行文件搜索?
- 它如何实现如此快速的文件搜索?
引用其常见问题解答:
"Everything"仅索引文件和文件夹名称,并且通常需要几秒钟来构建其数据库。在Windows 10上进行全新安装(约120,000个文件)将花费约1秒钟进行索引。 100万个文件将需要大约1分钟。
如果它只需要一秒钟来索引整个Windows 10系统,并且只需要1分钟来索引100万个文件,这是否意味着它可以每秒索引120,000个文件?
为了使搜索快速,必须有一种特殊的数据结构。按文件名搜索不仅从开头搜索,而且在大多数情况下还从中间开始搜索。这使得一些广泛使用的索引结构,如Trie
和红黑树
失去了效力。
常见问题解答进一步澄清了问题:
"Everything"是否占用我的系统资源?
不,"Everything"使用非常少的系统资源。在Windows 10上进行全新安装(约120,000个文件)将使用大约14MB的RAM和不到9MB的磁盘空间。100万个文件将使用大约75MB的RAM和45MB的磁盘空间。