【发布时间】:2011-11-28 13:26:54
【问题描述】:
我对 eclipse ide 如何向您显示建议并如此快速地显示结果很感兴趣。我使用一个包含 1000 个和 1000 个类的庞大代码库,我认为例如建议拼写错误的类名会有一些滞后。
它如何搜索可能的建议? 为什么这么快? 它是否索引所有可能的情况以使其可以快速访问?
这只是我感兴趣的东西,因为我每天都使用 eclipse :) 干杯
【问题讨论】:
我对 eclipse ide 如何向您显示建议并如此快速地显示结果很感兴趣。我使用一个包含 1000 个和 1000 个类的庞大代码库,我认为例如建议拼写错误的类名会有一些滞后。
它如何搜索可能的建议? 为什么这么快? 它是否索引所有可能的情况以使其可以快速访问?
这只是我感兴趣的东西,因为我每天都使用 eclipse :) 干杯
【问题讨论】:
与 Google 可以搜索数十亿个条目的方式相同,或者像 Lucene 这样的文本索引系统也可以工作。这些系统首先对要搜索的文本进行索引,而且可能会很长;你可以在 Eclipse 中第一次导入项目时看到它,在后台索引所有内容需要花费大量时间。
然而,一旦数据被编入索引,就可以以令人难以置信的速度进行搜索。我相信这种搜索的复杂度是 O(log n),这意味着在 10 个项目中搜索需要 1 个单位时间,100 个项目需要 2 个,1000 个项目需要 3 个,100 万个需要 6 个,10 亿个需要 9 个,等等。 ..
对于如此高效的算法,数据大小几乎没有什么相关性。
【讨论】:
这是JDT Core(Java 开发工具)页面的摘录:
JDT Core 是 Java IDE 的 Java 基础架构。它包括:
...
- 一个基于索引的搜索基础结构,用于搜索、代码辅助、类型层次计算和重构。 Java 搜索引擎可以准确地找到源代码或二进制文件中的精确匹配项。
【讨论】:
它可能有一个 K-gram 索引来进行快速前缀搜索。或者可能是 Trie 数据结构。
【讨论】: