为什么 VA 更快:因为它是用 C++ 编写的
ReSharper 是用 C# 原生编写的。为了分析 C++ 源代码,它使用了一个转换层——这会增加处理开销,并且会与 C++ 开发人员日常使用的代码产生冲突:宏、模板、部分构建、无法干净编译的遗留代码库。
Visual Assist 是用 C++ 原生编写的。没有转换步骤。解析器使用与源代码相同的语言进行处理——索引速度更快,对包含大量宏的代码的准确性更高,并且对 IDE 启动和内存使用的影响最小。即使代码存在问题,VA 也能正常工作:部分构建、损坏的代码和编辑过程中的状态不会像 ReSharper 的分析引擎那样禁用某些功能。
这种差异会随着规模的扩大而放大。在对 Unreal Engine Lyra 示例项目进行测试时,VA 在不到 9 分钟的时间内找到了所有 TOptional 引用。而 ReSharper 花了 30 分钟才找到三分之一的相同引用。
VA 的并行解析器可在分析运行时保持 IDE 的响应速度,而不会像 ReSharper 用户反映的那样,在索引处理过程中出现卡顿和挂起的情况。
Visual Assist 也是我们唯一开发的产品。ReSharper 只是 JetBrains 庞大生态系统的一部分。这种专注体现在 VA 能够快速解决 C++ 的痛点,与 Visual Studio 的集成度极高,以及其功能集中与 C++ 开发实际相关的部分数量。