28
15

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 5 years have passed since last update.

ZOZOテクノロジーズその2Advent Calendar 2018

Day 11

Signposts と Instruments でパフォーマンスを計測する:入門編

Last updated at Posted at 2018-12-11

iOS アプリのパフォーマンスチューニングにおいて、Signposts を使用する方法について書きます。コード中に仕込んだ最も簡単なマーカーを Instruments で表示させるところまでを、初心者でも分かるように順を追って説明していきます。

#Signposts とは
パフォーマンスを計測するためのマーカーで、Xcode 10 で導入されました。パフォーマンスを調査したいコード中にマーカーを入れて、プロファイリングすることにより、その計測結果を Instruments 上にグラフィカルに表示することができます。
自分の気になるところをフォーカスして解析できるので、パフォーマンスチューニングが捗るはかどると思います。

#確認事項

Xcode 10 で導入されたものなので、iOS 12 以上でないと動きません。
Instruments_step0.png

#マーカーの使い方

import os.signpost

まずは、os.signpost をインポートします。

let bootLog = OSLog(subsystem: "com.example.your-app", category: "BootOperations")

それから、計測したい箇所で、ログのハンドルを取得します。 subsystem にはアプリの Bundle ID などを適当に指定し、category はこのログのグループ名を自由に考えて指定します。ここでは、起動時のパフォーマンスを計測するとして、BootOperations と指定しています。

os_signpost(.begin, log: bootLog, name: "fetch something")
fetchSomething()
os_signpost(.end, log: bootLog, name: "fetch something")

最後に、作成したログのインスタンスを使いながら、計測したい箇所を os_signpost().begin.end で囲みます。ここでは、 fetchSomething() の時間を測り、 fetch something として表示するように設定しました。

#計測方法
コードの準備が整ったら、実際に計測してみます。Instruments の Time Profiler を使う手順とほとんど同じなので、Time Profiler を使ったことがない人は、まず下記を参照して下さい。初めての人でも分かりやすくまとまっています。

Instruments Time Profiler の使い方
https://qiita.com/okamotoke/items/daac6645fc44daadf1dd

signpost を使うには、まず、Instruments を Time Profiler を選択して起動させます。
Instruments_step2.png
起動させたら、右上の「+」ボタンをクリックし、「Filter」のところで「sign」と入力すると、「os_signpost」が絞り込まれて表示されます。
Instruments_step3.png
この「os_signpost」をダブルクリックして追加します。
Instruments_step4.png
これで準備完了です。赤丸ボタンを押して計測をスタートし、マーカーを仕込んだコードが実行されたら、ストップしてみましょう。
Instruments_step5.png
無事に BootOperations グループの中で fetch something の実行時間が記録され、グラフィカルに表示することができました。

#まとめ
Signposts の簡単なマーカーをコード中に仕込み、Instruments で表示させる方法を説明しました。Signposts ではさらにいろいろなことができるので、興味ある方は下記をご覧下さい。

Signposts と Instruments でパフォーマンスを計測する:基礎編
https://qiita.com/hsawada/items/1358ebc9aa1a82ac4f12

#参考文献
Measuring Performance Using Logging
https://developer.apple.com/videos/play/wwdc2018/405

Xcode Time Profiler の使い方
https://qiita.com/okamotoke/items/daac6645fc44daadf1dd

28
15
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
28
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?