性能优化提示
本文概述了一些技术,帮助在处理大型项目时提高 CLion 的性能。
启用 CLion Nova
CLion Nova 是 CLion 的改进版本,使用 ReSharper C++/Rider C++ 语言引擎代替传统的 CLion Classic 引擎。 它为 IDE 提供了更好的响应性、准确性和性能。
CLion Nova 对新用户默认启用。 如果您正在使用 CLion Classic 并希望尝试 CLion Nova,请点击工具栏上的 IDE 和项目设置 按钮( ),然后点击 切换到 Nova 引擎:

您还可以在 中 启用 CLion Nova。
我们建议使用启用了 CLion Nova 的最新版本 IDE。 例如,v2024.3 中的各种改进 减少了 CLion Nova 的内存使用 ,并与 v2024.2 相比提高了整体 IDE 性能。 这在像 Chromium 这样的大型项目中尤为明显。
增加内存堆
启用内存指示器
您可以通过监控状态栏右下角的两个指示器来检查性能变慢是否由低堆内存引起:通用内存指示器和 Clangd 内存使用指示器。
按 Ctrl+Shift+A 打开 查找操作 对话框。
开始输入 memory ,然后启用两个选项, 显示 Clangd 内存使用情况 和 显示内存指示器:

CLion 将在状态栏中添加指示器:


在更改内存设置对话框中增加堆内存
从主菜单中选择 。
在打开的对话框中,在 最大堆大小 字段中设置更高的内存堆值。
点击 保存并重启。
从 Toolbox 增加内存堆
您还可以通过 Toolbox 应用更改堆大小:
在 Toolbox 中,选择您的 CLion 版本,然后点击右侧的齿轮按钮。
从打开的菜单中选择 设置:

转到 配置 部分,并在 最大堆大小 字段中设置新值:

重启 CLion。
调整 -Xmx
要增加内存堆,您可以更改 -Xmx 选项,该选项设置 JVM 的最大堆大小:
在主菜单中,进入 . 此操作会在 IDE 配置目录中创建 .vmoptions 文件的副本,并在编辑器中打开它。
更新
-Xmx值。 例如,使用-Xmx4096m分配 4 GB 的内存,而不是默认的 2 GB。重启 CLion 以应用更改。
如果可用堆内存量低于最大堆大小的 5%,将会出现警告。 要调整 -Xmx 值,请单击警告框中的 配置。

更改分配给 Clangd 的内存量
按 Ctrl+Shift+A 打开 查找操作 对话框。
搜索 Registry:

在 Registry 对话框中,开始输入 clion.clangd.max.memory。
设置所需的值并关闭对话框。

加速代码分析
即时代码分析是 CLion 中最消耗性能的过程之一。 以下是一些可以减轻其负担的方法。
调整文件的分析
即时代码分析是 CLion 中最消耗性能的过程之一。 要减轻其负担,您可以为当前打开的文件配置高亮级别:无、语法或所有问题。
使用编辑器右上角的检查小部件:

启用省电模式
您可以使用以下选项之一启用省电模式或电池效率模式:
作为逐一禁用单个检查或文件的替代方法,尝试使用 省电模式。 此模式会禁用整个 IDE 中的所有检查和其他资源密集型后台任务。
要启用 省电模式 ,请转到 。

右键点击 状态栏 并选择 省电模式。
省电模式 图标将出现在状态栏中。
检查基于 Clangd 的引擎
CLion 集成了一个补充的 基于 Clangd 的语言引擎 ,默认启用。 目前,它适用于错误/警告注释、某些导航任务、通过 ClangFormat 的代码格式化以及带有快速修复的代码高亮。
在大多数情况下,基于 Clangd 的引擎比内置引擎运行得更快(有时还提供更准确的结果)。 然而, 它并未用于所有操作。 例如,Clangd 提供快速修复的位置,而修复本身由 CLion 的引擎执行。 或者, 查找用法 使用 Clangd 搜索当前在编辑器中打开的文件,而 CLion 的引擎则用于所有其他用法。
我们建议您在调查性能问题时考虑 Clangd 引擎的特性。 使用 试验引擎设置,看看它们是否会影响某些任务的性能。
加速索引
排除目录和文件类型
默认情况下,CLion 会索引 CMakeLists.txt 中列出的所有目录(包括
sources和include_directories路径),以确保正确的代码解析。您的项目可能包含二进制文件、日志或构建工件的文件夹,这些文件夹不会影响 CLion 的代码洞察。 由于这些文件夹的大小或位置,索引它们也可能会消耗大量资源。 在这些情况下,可以手动排除这些文件夹:右键点击项目树中的目录并选择 。

一旦文件被排除,它们的符号将不再对 CLion 可用。 以下功能将对排除的文件禁用:代码补全、自动导入(除非排除的目录被
include_directories在 CMakeLists.txt 中引用)、代码生成、文件中查找(打开的文件除外)、导航和重构。您还可以按文件类型排除日志或生成的数据等文件。
转到 并切换到 已忽略的文件与文件夹 选项卡。
将新扩展名(
)添加到忽略的文件类型列表中:

应用更改并关闭对话框。
处理较小的 CMake 子项目
被解析的文件作用域由加载的 CMake 脚本决定。 因此,如果您的项目分为多个子目录,并且每个子目录中都有独立的 CMakeLists.txt ,您可以单独加载较小的子项目(为此,请在子 CMakeLists.txt 上运行 加载 CMake 项目):

当您只需要探索大型项目的一部分时,另一种选择是创建一个 编译数据库 ,将其缩减到感兴趣的部分,然后在 CLion 中作为项目打开。
使用 _CLION_IDE__ 宏消除繁重的解析
在解析复杂的预处理器宏时,IDE 可能会发生卡顿。 要消除代码中这些有问题的定义,请使用 __CLION_IDE__ (或 __JETBRAINS_IDE__ )宏将其替换为一些虚拟定义:

此宏仅影响解析,在构建或运行代码时是未定义的。
禁用不必要的插件
要提高 IDE 性能,请尝试禁用您不需要的 插件。 您始终可以稍后重新启用它们。
例如,如果您正在使用某个特定的 测试框架 ,请考虑禁用 CLion 支持的其他测试框架的插件。
转到 。
浏览 已安装 选项卡并禁用不必要的插件:

您还可以从
下的菜单中一次性禁用所有手动安装的插件(非捆绑插件):

报告性能问题
如果您遇到 IDE 卡顿或高 CPU 或内存使用率,并且上述提示无效,请向我们提供 IDE 日志、线程转储和性能快照。 有关如何收集和发送此信息的详细信息,请参阅 此说明。