<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>性能优化 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</link>
        <description>Recent content in 性能优化 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://knightli.com/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>如何排查由插件引起的 VS Code CPU 占用过高</title>
        <link>https://knightli.com/2026/04/01/vscode-extension-cpu-troubleshooting/</link>
        <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://knightli.com/2026/04/01/vscode-extension-cpu-troubleshooting/</guid>
        <description>&lt;p&gt;VS Code 突然变卡、风扇狂转、CPU 长时间高占用时，最常见原因通常不是编辑器本体，而是扩展插件冲突或插件行为异常。&lt;/p&gt;
&lt;p&gt;这篇文章给你一套可以立即执行的排查路径，优先用最省时间的方法定位问题。&lt;/p&gt;
&lt;h2 id=&#34;先做最快的定位start-extension-bisect&#34;&gt;先做最快的定位：Start Extension Bisect
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Start Extension Bisect&lt;/code&gt; 的核心思路是二分法：
每一轮临时禁用一半扩展并重启，通过你反馈“问题是否仍存在”，快速缩小范围，直到定位到可疑插件。&lt;/p&gt;
&lt;p&gt;操作步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按 &lt;code&gt;Ctrl+Shift+P&lt;/code&gt;（macOS 为 &lt;code&gt;Cmd+Shift+P&lt;/code&gt;）打开命令面板。&lt;/li&gt;
&lt;li&gt;输入并执行 &lt;code&gt;Start Extension Bisect&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;每次重启后观察 CPU 占用和卡顿是否复现。&lt;/li&gt;
&lt;li&gt;重复几轮后，VS Code 会给出可疑扩展列表。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;定位后怎么处理&#34;&gt;定位后怎么处理
&lt;/h2&gt;&lt;p&gt;找到可疑插件后，建议按这个顺序处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先更新插件到最新版本。&lt;/li&gt;
&lt;li&gt;若无改善，临时禁用该插件 1-2 天观察。&lt;/li&gt;
&lt;li&gt;对于功能可替代的插件，优先换成更轻量方案。&lt;/li&gt;
&lt;li&gt;若必须使用该插件，检查它的高级配置，关闭不必要的实时分析、索引或监听功能。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;两个容易被忽略的放大器&#34;&gt;两个容易被忽略的“放大器”
&lt;/h2&gt;&lt;p&gt;即使主因是插件，以下配置也会放大 CPU 问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;搜索范围过大&lt;br&gt;
例如把构建产物、依赖目录、日志目录也纳入全局搜索，会让插件和文件索引持续高负载。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文件监控包含大目录或软链接&lt;br&gt;
软链接、缓存目录、自动生成目录容易触发大量文件事件，导致扩展反复工作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以在 &lt;code&gt;settings.json&lt;/code&gt; 中适当排除目录，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;search.exclude&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/node_modules&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/dist&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/build&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;files.watcherExclude&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/.git/objects/**&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/node_modules/**&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;**/dist/**&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;复盘建议&#34;&gt;复盘建议
&lt;/h2&gt;&lt;p&gt;如果你已经定位到问题插件，建议记录三件事：插件名称、触发场景、最终处理方式。&lt;br&gt;
这样下次迁移环境或重装系统时，可以快速避开同类问题。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;VS Code 高 CPU 占用的排查，最有效路径是先用 &lt;code&gt;Start Extension Bisect&lt;/code&gt; 快速定位，再结合搜索和文件监控范围做收敛。&lt;br&gt;
先定位，再优化，比“盲目禁用一堆插件”更省时间，也更稳定。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
