CLion教程-CLion性能调优技巧

本文总结了一些有用的技巧,可以帮助您提高在大型项目中使用CLion的性能。
增加内存堆大小
启用内存指示器
您可以通过监视状态栏右下角的两个指示器来检查性能减慢是否是由于内存堆不足引起的:常规内存指示器和Clangd内存使用指示器。
内存指示器 这两个指示器可以从状态栏菜单中打开/关闭,右键单击即可:
状态栏小部件切换器
在“更改内存设置”对话框中增加堆大小 从主菜单选择“帮助 | 更改内存设置”。
在打开的对话框中,将“最大堆大小”字段设置为更高的内存堆值。
点击“保存并重新启动”。
调整-Xmx
增加内存堆的另一种选项是修改相应的JVM选项,即-Xmx:
转到“帮助 | 编辑自定义VM选项” - 此操作将在IDE配置目录中创建一个.vmoptions文件的副本并将其打开到编辑器中。
将-Xmx设置为更高的值。例如,将-Xmx设置为4096m,表示4GB,而不是默认的2GB。
重新启动CLion。
CLion还会在空闲堆内存量低于最大堆大小的5%时发出警告:
低内存警告消息 单击“配置”以在“内存设置”对话框中编辑-Xmx:
在“内存设置”中更改Xmx 更改为Clangd分配的内存量
按下Ctrl+Shift+A或选择“帮助 | 查找操作”菜单。在打开的弹出窗口中,开始键入“Registry”,选择相应的项目,然后按Enter。
在“查找操作”中搜索“Registry” 在“Registry”对话框中,开始键入“clion.clangd.max.memory”。
设置所需的值并关闭对话框。
加快代码分析速度
调整文件的分析设置
实时代码分析是CLion中消耗性能最多的过程之一。为了减轻负担,您可以为当前打开的文件配置高亮显示级别:无、仅错误或全部问题。使用编辑器右上角的检查小部件:
切换到省电模式
作为逐个配置检查或文件的替代方案,请尝试省电模式。它会禁用IDE中的所有检查和其他消耗性能较高的后台任务。
要启用省电模式,请选择“文件 | 省电模式”。
检查基于Clangd的引擎
CLion集成了一个补充的基于Clangd的语言引擎,默认情况下已启用。目前,它适用于错误/警告注释、某些导航任务、通过ClangFormat进行代码格式化以及带有快速修复的代码高亮。
在大多数情况下,基于Clangd的引擎比内置引擎更快(有时还能提供更准确的结果)。然而,并非所有操作都使用Clangd。例如,Clangd提供了快速修复的位置,但修复本身是由CLion自己的引擎执行的。或者,查找用途使用Clangd搜索当前在编辑器中打开的文件,而CLion自己的引擎用于其他所有用途。
我们建议在解决性能问题时考虑Clangd引擎的特点。使用“设置 | 语言和框架 | C/C++ | Clangd”来尝试调整引擎设置,并查看它们是否对特定任务的性能产生影响。
加快索引速度
排除目录和文件类型
默认情况下,CLion会对CMakeLists.txt中列出的所有目录(源代码和include_directories路径)进行索引,以便正确解析。与此同时,您的项目可能包含一些二进制文件、日志文件或构建生成的文件,它们不会影响CLion的代码智能。另外,由于某些目录的大小或位置原因,对它们进行索引可能会耗费大量资源。因此,手动排除这些目录是合理的:在项目树中右键单击目录,选择“标记目录为 | 排除”。
由于被排除文件中的符号无法被CLion自动完成,因此这些文件将无法使用以下功能:代码自动完成和自动导入(除非排除的目录在CMakeLists.txt中使用include_directories标记),代码生成,文件搜索(除非在当前打开的文件范围内),导航和重构等。
另一种消除日志文件或生成数据文件的索引的方法是按文件类型在“设置 | 编辑器 | 文件类型”中将其排除:
忽略的文件类型
处理较小的CMake子项目 被解析的文件范围由加载的CMake脚本确定。因此,如果您的项目分为几个子目录,每个子目录都有独立的CMakeLists.txt文件,您可以单独加载较小的子项目(通过在子CMakeLists.txt上运行“加载CMake项目”):
使用CLION_IDE宏消除繁重的解析
在解析复杂的预处理器宏时,IDE可能会出现卡顿的情况。为了消除代码中的这些问题定义,可以使用__CLION_IDE__(或__JETBRAINS_IDE__)宏将其替换为一些虚拟定义:
CLion IDE宏 此宏仅影响解析过程,在构建或运行代码时不起作用。
禁用不必要的插件
为了提高IDE的性能,请尝试禁用您不需要的插件。您总是可以稍后再次启用它们。
例如,如果您正在使用特定的测试框架,请考虑禁用CLion支持的其他测试框架的插件。
转到“设置 | 插件”。
浏览“已安装”选项卡,禁用不必要的插件:
禁用不必要的插件 您还可以从“设置”按钮下的菜单中一次性禁用所有手动安装的插件(非捆绑的插件):