Everything是一个文件搜索程序。由于其作者尚未发布源代码,我想知道它是如何工作的。
引用其常见问题解答,
"一切"只索引文件和文件夹名称,通常需要一个 几秒钟来建立自己的数据库。全新安装的Windows 10 (大约120,000个文件)将需要大约1秒的索引。百万 文件大约需要1分钟。
如果索引整个Windows 10只需一秒钟,并且只需1分钟就可以索引一百万个文件,这是否意味着它可以每秒索引120,000个文件?
要快速搜索,必须有一个特殊的数据结构。按文件名搜索不仅仅从头开始搜索,而且在大多数情况下也从中间搜索。这使得一些广泛使用的索引结构如Trie
和Red–black tree
无效。
常见问题解答进一步澄清。
" Everything"占用我的系统资源?
不,"一切"使用非常少的系统资源。全新安装 Windows 10(大约120,000个文件)将使用大约14 MB的ram和更少 超过9 MB的磁盘空间。 1,000,000个文件将使用大约75 MB的RAM 和45 MB的磁盘空间。
答案 0 :(得分:0)
- 如何有效地索引文件?
首先,它仅索引文件/目录名称,not contents。
我不知道它是否足以满足您的需求,但普通方式是使用FindFirstFile功能。编写一个简单的C程序来递归列出文件夹/文件,看看它是否足够快。通过优化的第二步是并行运行线程,但是磁盘访问可能是瓶颈,如果这样多线程会带来很少的好处。
如果这还不够,最后你可以尝试深入研究甚至更低的 Native API函数;我对这些没有经验,所以我不能给你进一步的建议。你会非常接近金属,也许Linux NTFS project有一些你需要学习的概念。
- 它用于文件搜索的数据结构是什么?
- 如何快速搜索文件?
嗯,你知道有很多不同的数据结构专为快速搜索而设计......作者可能会运行很多基准测试。