<?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/zh-tw/tags/%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96/</link>
        <description>Recent content in 效能優化 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>如何排查由外掛引起的 VS Code CPU 佔用過高</title>
        <link>https://knightli.com/zh-tw/2026/04/01/vscode-extension-cpu-troubleshooting/</link>
        <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://knightli.com/zh-tw/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;code&gt;Good now&lt;/code&gt; 或 &lt;code&gt;This is bad&lt;/code&gt;。&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>
