提升 AppCode 性能的几个小技巧
AppCode 好用是好用,但这性能比起 Xcode 让人很无语。不过,AppCode 的性能是可以优化的。(2024年补充:AppCode 已于2023年停止更新)
最近的开发过程中发现 AppCode 占了 5GB 内存却仍然卡得干不了活,忍无可忍之下了解了一下如何优化 AppCode 性能。主要的参考资料来自 AppCode 官网。
资料中提到几个点总结下来就是:
- 加大 AppCode 内存
- 提升 AppCode code analysis 速度
- 提升 AppCode indexing 速度
- 关闭不必要的 Plugin
加大内存
打开内存指示器
AppCode 卡顿的一个主要原因是堆内存过低。所以我们很有必要打开 AppCode 内存指示器。
在 AppCode 底部状态上右键点击后出现如下菜单,勾选 “Memory Indicator” 即可打开内存指示器。
我的内存指示器已打开,显示 “264 of 6131M”。内存状态良好。
注意:当可用的堆内存大小低于最大堆内存的5%时,会有低内存告警。
加大堆内存
从 AppCode 顶部菜单中 Help | Change Memory Settings 调整堆内存大小。
我的 MacBook 内存大小 16G,已经给 AppCode 分了 6144 MB。已经相当奢侈,不能再加了。(即便 6G 内存,AppCode 还是卡,所以就我遇到的问题而言,瓶颈并不在内存)
提升代码分析速度
On-the-fly code analysis is one of the most performance-consuming processes in AppCode.
AppCode 的实时代码检查过程是最吃电脑性能的一个过程。针对这个问题,我们可以对实时代码检查进行配置,减少检查过程的性能消耗。
简单来说,就是减少实时代码检查甚至干脆不要实时检查(等要要检查时再启动)。
调整代码检查项
AppCode 默认状态下会打开全部的检查类型(作者:不卡才怪?),我们可以根据自己的需要进行调整。
其实我们可以放心大胆地全关,因为完全可以在需要时通过 Code | Inspect Code 命令来检查。
调整检查级别
此外,还可以使用 Code | Configure Current File Analysis 命令调整当前已打开文件的检查级别。
分三种级别:
- None - 不检查
- Syntax - 语法检查
- Inspections - 检查
不过个人感觉这个功能不太实用。
提升索引速度
AppCode 对文件进行索引(代码检查、代码自动补全、代码生成、自动导入功能依赖索引)。不过,不索引那些包含二进制文件、日志以及构建产物的目录并不会影响 AppCode 的代码检查等功能,所以进行索引时我们完全可以将这些目录排除。
另外,某些文件因过太大或是位于远程机器,索引的代价非常大。所以也应将这些文件排除在外。
排除文件或目录的方法很简单,在 Project 窗口将工程切换到 Files 视图,右击想要排除的文件,然后选择 Mark Directory as | Excluded
回到前面我提到分配6G内存的情况下 AppCode 仍然卡顿的问题,发现卡顿时 AppCode 一直在索引。检查后发现 AppCode 打开该工程后,索引范围是当前用户的所有文件(即整个 /Users/username/
目录。发现 AppCode 打开其他工程时只会索引当前工程目录中的文件,所以这是 AppCode 的 bug?)。对数量巨大的文件进行索引,几个小时也完成不了吧?
解决办法:果断排除掉不相关的目录,减少索引时间。
其他优化技巧
另外一些优化手段包括:
- 关闭 AppCode 中不必要的插件。AppCode 默认加载了很多插件,我们可以关闭不需要的插件以减少内存占用、提升速度
- 保证 AppCode 和 Xcode 版本兼容。如下图,这是我自己遇到的一个情况:AppCode 提示当前 Xcode 版本为 12.4,版本过高。
不清楚到底有什么影响,不过还是升级到跟 Xcode 12.4 兼容的 AppCode。如下图,AppCode 和 Xcode 兼容时,没有上述的警告。
- Download Xcode caches。如下图,勾选这里的 Download Xcode cacheds automatically,某些情况下能提升索引性能。(作者:按官方解释,这里的”某些情况”其实并不多,主要是指升级 Xcode 的情况)
总结
一番折腾之后,AppCode 速度果然上来了。虽然 AppCode 响应速度相对 Xcode 还是有些差距,不过考虑到 AppCode 强大的重构功能还是非常值得使用的!