61
48

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.

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

Last updated at Posted at 2018-01-22

環境

  • 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を使いこなすことで重たい処理を特定し、パフォーマンス改善につなげることができました

参考リンク

61
48
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
61
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?