解决 VSCode CPU 占用率高

这篇文章大概率不能解决你的问题,只是提供解决问题思路!

这篇文章大概率不能解决你的问题,只是提供解决问题思路!

这篇文章大概率不能解决你的问题,只是提供解决问题思路!

起因

最近我一直被一个问题困扰:VSCode CPU 占用率太高。

起初我以为是正常现象,毕竟可能既要马儿不吃草,又要马尔跑得快。后来查看 Windows 任务管理器,发现 VSCode CPU 占用率达100%,以至于导致系统严重卡顿。

经过

于是我VSCode的进程管理器。可是我没有发现占用CPU的进程。

思考

VSCode是什么?

VSCode是一个非常流行的IDE。微软官方提供一个轻量级安装版本。用户在使用时可以安装插件协助开发。

所以问题很可能出在后安装的插件上。我的 VSCode 装了 77 款插件。(的确装得有点多。我有一点收集癖好,喜欢尝试好玩的插件

接着,我屏蔽了所有的插件。发现 VSCode CPU 占用率就正常了。

控制变量法

控制变量法(英语:control variates)是在蒙特卡洛方法中用于减少方差的一种技术方法。该方法通过对已知量的了解来减少对未知量估计的误差。

我按照控制变量法,逐步解开被屏蔽的插件。最终发现是一款名叫 Todo Tree 的插件引起的 VSCode CPU 占用率过高。

我在 Todo Tree 插件的配置中,看到一个开关。

Todo Tree Debug 开关

我打开这个开关,在 Todo Tree 的输出中看到 N 多这样的日志:

1
2
3
4
5
6
7
8
20:17:26.020 Pattern:(//|#|<!--|;|/\*|^|^[ \t]*(-|\d+.))\s*(\[x\]|\[ \]|XXX|TODO|HACK|FIXME|BUG)
20:17:26.021 Command: "d:\Software\Microsoft VS Code\resources\app\node_modules.asar.unpacked\@vscode\ripgrep\bin\rg.exe" --no-messages --vimgrep -H --column --line-number --color never --max-columns=1000 --no-config -f "c:\Users\Tang Lijin\AppData\Roaming\Code\User\workspaceStorage\de8a3d12cdf87f96eccd36a478da3609\Gruntfuggly.todo-tree\kp7rt03o9.txt" -g "!**/node_modules" -g "!d:\Projects\blog\node_modules\hexo-cli\assets" -g "!d:\Projects\blog\node_modules\hexo-cli\assets\themes\landscape" "d:\Projects\blog\public\themes\next\tags\Resource-Quote"
20:17:26.028 Searching d:\Projects\blog\public\themes\next\downloads\images\avatar.png...
20:17:26.028 Writing pattern file:c:\Users\Tang Lijin\AppData\Roaming\Code\User\workspaceStorage\de8a3d12cdf87f96eccd36a478da3609\Gruntfuggly.todo-tree\10j6oxqq1t.txt
20:17:26.029 Pattern:(//|#|<!--|;|/\*|^|^[ \t]*(-|\d+.))\s*(\[x\]|\[ \]|XXX|TODO|HACK|FIXME|BUG)
20:17:26.030 Command: "d:\Software\Microsoft VS Code\resources\app\node_modules.asar.unpacked\@vscode\ripgrep\bin\rg.exe" --no-messages --vimgrep -H --column --line-number --color never --max-columns=1000 --no-config -f "c:\Users\Tang Lijin\AppData\Roaming\Code\User\workspaceStorage\de8a3d12cdf87f96eccd36a478da3609\Gruntfuggly.todo-tree\10j6oxqq1t.txt" -g "!**/node_modules" -g "!d:\Projects\blog\node_modules\hexo-cli\assets" -g "!d:\Projects\blog\node_modules\hexo-cli\assets\themes\landscape" "d:\Projects\blog\public\themes\next\downloads\images\avatar.png"
20:17:26.037 Searching d:\Projects\blog\public\themes\next\2022\12\hello-world...
20:17:26.038 Writing pattern file:c:\Users\Tang Lijin\AppData\Roaming\Code\User\workspaceStorage\de8a3d12cdf87f96eccd36a478da3609\Gruntfuggly.todo-tree\3q2hxcp83.txt

这些日志表明 Todo Tree 处理了 d:\Projects\blog\public 下的文件。

结果

我在 Todo Tree 插件的配置中,又看到一个开关。

Todo Tree Watch 开关

我把这个开关关闭了,VSCode CPU 占用率就又正常了。