SwiftUI 預覽讓 CPU 負載飆高

CPU-Usage

從 Xcode 14 開始,SwiftUI 專案的 Live 預覽功能預設是開啟的,所以我們可以在右側的預覽畫面上即時操作放在畫面上的元件,雖然這功能很炫很方便,但天下沒有白吃的午餐,這功能是拿 CPU 負載來換的。

截圖 2022-08-21 16.23.18

只要預覽畫面一開啟,CPU 負載就開始飆高,如果此時又開啟了模擬器執行這個偉大 App,這時 CPU Loading 再往上升一級。當然電腦就開始發熱,風扇開始狂轉,電力就跟著狂掉,即使你的筆電是新版的 M1 Pro Max 也一樣,因為這功能就是吃 CPU 效能的怪物。開啟「活動監視器」就可以看到你的 CPU 正在非常努力的消耗能源中,即是 Xcode 只是開著放在那裡也一樣。

截圖 2022-08-21 15.56.59

關掉模擬器,然後再關掉預覽功能呢?沒有用,只要預覽功能開啟過,預覽的服務程式就已經啟動,不會因為你關了預覽功能這個服務程式就關掉,除非把 Xcode 整個關掉(要從記憶體踢掉喔) CPU 才開始冷卻。所以帶著筆電又使用電池在寫程式的話,就會非常惱人,ㄧ下電力就沒了。要如何不關掉 Xcode,又要讓 CPU 冷靜下來,只要將兩個讓 CPU 狂飆的程式關掉就可以了,這兩個程式其實就是模擬器使用的,一個是 diagnosticd,另一個是 launchd_sim,可以在「活動監視器」中看到。

接下來就是下指令殺掉這兩支程式就好。你可以開啟終端機,然後下下面這個指令就搞定,只是每次都要輸入管理者密碼,有點麻煩。

sudo pkill diagnosticd, launchd_sim

如果覺得每次都要輸入密碼實在太囉唆,可以編寫一個檔案,檔名任意例如 cpudown,存檔在任何你喜歡的位置,但強烈建議放在家目錄下,也就是終端機一開啟後的那個目錄,檔案內容如下。

#!/bin/sh
pkill diagnosticd, launchd_sim 

存檔後修改權限與檔案擁有者,指令如下。

sudo chown root cpudown
sudo chmod 4755 cpudown

以後要讓 CPU 冷卻時,開啟終端機執行下面這個指令 CPU 就立刻安靜了,而且不用輸入管理者密碼。

./cpudown

當然這個指令一執行預覽功能與模擬器就會立刻關掉,如果需要重新啟動預覽功能,按熱鍵「Option + Command + p」或是關掉預覽再開啟預覽(連按兩次「Option + Command + return」),預覽功能就會恢復,當然你的 CPU 又要開始努力的消耗能源。

有沒有更好的作法,我相信有,但應急的方式就先這樣處理了,不然開啟 Xcode 的同時又要開啟視訊系統,我覺得電腦要燒掉的機率有點高。

2022/9/1 補充更新

有網路神人發現正確的原因,於是對症下藥給了解法,請參考此網址。https://blog.nihongo-app.com/stop-xcode-14-beta-from-pegging-cpu/

發表迴響