4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-12-03

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

  • タイトル通りです。

おことわり

  • この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

引用した記事(再掲)

4
5
0

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
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?