search
LoginSignup
5

More than 1 year has passed since last update.

posted at

updated at

[Tips]Xcode13.1のSwiftUIのpreviewでCPU使用率が高くなるのをSpotlightを止めて回避する(iOS15)

このエントリでできること

  • タイトル通りです。

おことわり

  • このTipsは、2021年12月時点のXcodeの最新版(13.1)を使用するときを対象としています。iOSシミュレータのバージョンは15.0です。
  • この後のXcodeでは必要がなくなっているかもしれません。
  • 上記以外のバージョンでは動作を確認していません。

TL;DR;

筆者の場合は、ターミナルで以下を実行してからXcode再起動でCPU使用率が低くなりました。

cd ~/Library/Developer/Xcode/UserData/Previews/Simulator\ Devices/

find . -name com.apple.suggestions.plist -exec plutil -replace SuggestionsAppLibraryEnabled -bool NO {} ";"

対象

  • Xcode 13.1
  • 筆者はM1なMacBook Airで確認しましたが、IntelなMacでもおそらく同様では。

  • iOS SimulatorのOSのバージョンは15.0

対象とする事象

XcodeでSwiftUIを使用するとき、Previewモードを使うと、画面の様子を即座に確認できて便利です(下図)。

image.png

なのですが、筆者の環境(Xcodeの最新版をAppStoreから入れたばかり)では、プレビューモードをONにしたとき、CPU使用率が高くなり、気になりました。ドックにあるActivity Monitorは下図のような見た目です。これはちょっといただけないと思いました。

image.png

調べたことと回避方法

ActivityMonitorを見ると、SpotlightのCPU使用率が高くなっています。

スクリーンショット 2021-12-04 5.58.45.png

このSotlightのプロセスがどこで動いているのかを調べてみるため、brewでインストールできる pstreeコマンドを使います。

hiroki@MBA % pstree -p 1258
-+= 00001 root /sbin/launchd
 \-+= 01103 hiroki launchd_sim /Users/hiroki/Library/Developer/Xcode/UserData/Previews/Simulator Devices/6AB14855-C5D2-4312-9AB9-262FBBED342F/data/var/run/launchd_bootstrap.plist
   \--= 01258 hiroki /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/Spotlight.app/Spotli

このあたりのヒントでWebで検索してみると、Appleの開発者フォーラムに、同じ状況にあっている人と、回避方法が載っていました。

iOS 15 Simulator's Spotlight process consistently uses ~100% of CPU. Any ideas for mitigation?

以下が、Preview用のデバイスでSpotlight動かさないようにするためのスクリプトです。

(引用)

cd ~/Library/Developer/Xcode/UserData/Previews/Simulator\ Devices/
find . -name com.apple.suggestions.plist -exec plutil -replace SuggestionsAppLibraryEnabled -bool NO {} ";"

上のスクリプトで何をやっているのか調べるため、対象のディレクトリに移動してみました。

cd ~/Library/Developer/Xcode/UserData/Previews/Simulator\ Devices/

筆者の状態では、ここに1つのディレクトリがあり、Preview用のデバイスに関する情報が約1.1GB格納されていました。デバイス種類をふやすと、こちらにディレクトリが増えます。

スクリプトの2行目で、このディレクトリ内に格納された、設定ファイルの内容を書き換えています。(こちらは、MacでSpotlightを止めたいときにも同じようなことをするなぁなるほど、と思いました。)

ということで、スクリプトを実行して、Xcodeを再起動、SwiftUIのpreviewモードを有効にしてみます。

Activity Monitorで確認すると、CPU使用率が減っており、狙った効果が得られました。

スクリーンショット 2021-12-04 6.15.29.png

おわりに

このエントリでは、Xcode13.1のSwiftUI previewでCPU使用率が高くなるのをSpotlightを止めて回避するというTIpsについて紹介しました。

引用した記事にもありますが、iOSのシミュレータでもSpotlightが走りCPU使用率が高くなる状況も、筆者の環境では止めることができました。

(引用)

cd ~/Library/Developer/CoreSimulator/Devices 

find . -name com.apple.suggestions.plist -exec plutil -replace SuggestionsAppLibraryEnabled -bool NO {} ";" 

Preview動かしながらSimulatorを1つ動かしても下図程度で、いい感じです。

スクリーンショット 2021-12-04 6.27.31.png

引用した記事(再掲)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5