Edited at

XcodeのInstrumentsのTime Profilerを使って重たい処理を調べる

More than 1 year has passed since last update.


環境


  • Xcode 9.2

  • Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)


はじめに


  • パフォーマンス改善を行うときにTime Profilerを使ったのでそのときに行ったことをまとめて見ました


Time Profilerとは


実行中のプロセスについて、オーバーヘッドの小さい時間ベースのサンプリングを実行します。OS XまたはiOSで利用できます。



使い方


Xcode > Open Developer Tool > Instrumentsから開きます

スクリーンショット 2018-01-22 21.59.51.png


Time Profilerを選択する

スクリーンショット 2018-01-22 22.03.03.png


端末かSimulatorを選択して Recordボタンを押すと計測が開始される

スクリーンショット 2018-01-22 22.06.23.png


計測された処理が表示されます

スクリーンショット 2018-01-22 22.26.53.png


Call Treeで設定を変えることで表示される情報が変わります


  • 重い処理を特定する為に設定を変更して絞り込みます
    スクリーンショット 2018-01-22 22.28.22.png


メソッドをダブルクリックすると実装したコードへジャンプできます


  • コードへジャンプすることで重い処理の中からさらに詳しくみることができます


viewDidLoad()

スクリーンショット 2018-01-22 22.30.49.png


test()

スクリーンショット 2018-01-22 22.37.23.png


test2()

スクリーンショット 2018-01-22 22.36.36.png


サンプルコード

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
test()
test2()
}

private func test() {
var list = [String]()
for i in 0...10000 {
list.append(i.description)
}

let text = list.joined(separator: ",")
print(text)
}

private func test2() {
var list = [String]()
for i in 0...100000 {
list.append(i.description)
}

let text = list.joined(separator: ",")
print(text)
}
}


まとめ


  • Time Profilerを使いこなすことで重たい処理を特定し、パフォーマンス改善につなげることができました


参考リンク