gpt4 book ai didi

c++ - Eclipse 卡住长文件中的打开声明

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:10:49 24 4
gpt4 key购买 nike

我在 Linux 上使用 Eclipse CDT。我有一个包含 5k 行代码的长头文件。当我尝试通过按 F3 打开此文件中某些变量的声明时,Eclipse 卡住大约 20 秒,然后打开声明。此问题导致代码导航在长文件中无法使用。在较短的文件中,声明几乎立即打开。

我尝试重新启动 Eclipse 并重建索引,但这没有帮助。
我的 Eclipse 版本是:

Version: Neon.1 (4.6.1)
Build id: Z20161111-1340

我该如何解决这个问题?

最佳答案

由于 CDT 的架构方式,对较大文件的操作将比对较小文件的操作慢。

CDT从两个地方获取Open Declaration等操作代码的语义信息:

  • 对于当前打开的文件:从为该文件构建的 AST(抽象语法树)。
  • 对于项目中包含的头文件和其他文件:来自索引,它是有关该项目的语义信息的可搜索数据库。

索引最初是通过为项目中的每个文件创建一个 AST 并将它们的信息存储到数据库中来构建的。这是一个耗时的过程,但只需要做一次(然后每次保存文件时增量更新),一旦建立,查询索引很快(查询大约是O(log n) 在索引的大小中)。

另一方面,由于 AST 表示当前(可能)正在编辑的代码,它会不断地“在您键入时”重建。由于构建 AST 的文件长度至少为 O(n)(可能更糟;我没有仔 segmentation 析过),依赖 AST 的操作会随着文件长度的增加而变慢您正在编辑的文件增加。

现在,解决方法:

  1. Preferences | 中启用一些可扩展性设置 C/C++ |编辑|可扩展性 可能会有所帮助,它限制了需要为大文件构建 AST 的操作类型(注意您可以定义“大”的阈值)。我不是很清楚它是否会使公开声明更快;试试看。

  2. 然而,您最好的选择是将您的 header 分解为更小的 header 。这样做的另一个好处是可以减少编译时间(因为并非所有翻译单元都需要包含 header 的所有部分),并且可以更好地组织您的代码(最后一个是个人喜好问题;请随意反对)。

关于c++ - Eclipse 卡住长文件中的打开声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com