Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #308】パフォーマンス・実行速度改善のために処理時間を計測する

はじめに

大量のデータを扱う場合、パフォーマンス・実行速度が遅く、原因追求のために処理時間を計測することがあります。

自分は今まで処理前と処理後にNSDateを取得し、計測していました。

でも、ずっと前にXCTestで処理時間計測のための機能が追加されていることに気づきました。

処理時間計測のメソッド

XCTestフレームワークのXCTestCaseクラスのメソッドとして実装されています。 下記2つのメソッドです。

  1. measureBlock:
  2. measureMetrics:automaticallyStartMeasuring:forBlock:

ブロック内に書いた処理の処理時間を計測してくれます。2つ目のmeasureMetrics:automaticallyStartMeasuring:forBlock:を使うと、計測の開始と終了を指定することができます。

サンプル

実装

ViewControllerに指定した回数ループするメソッドを作りました。

import UIKit

class ViewController: UIViewController {
    func loop(_ times: UInt) {
        for _ in 0..<times {
            let _ = Date()
        }
    }
}

このメソッドの処理時間をXCTestで計測します。

import XCTest
@testable import SampleCalculatePerformance

class SampleCalculatePerformanceTests: XCTestCase {
    // 単純にブロック内の処理の時間を計測
    func testCalculatePerformance() {
        measure {
            let viewController = ViewController()
            viewController.loop(100000)
        }
    }
    
    // 計測対象からViewControllerの初期化を除外する
    func testCalculatePerfomanceManual() {
        measureMetrics([.wallClockTime], automaticallyStartMeasuring: false) {
            let viewController = ViewController()
            
            startMeasuring()
            viewController.loop(500000)
            stopMeasuring()
        }
    }
}

結果

XCTestのテストを実行しました。結果は下記のスクリーンショットの通りとなります。

f:id:fjswkun:20180212123331p:plain

サンプルのダウンロード

Google Driveに保存しています。

SampleCalculatePerformance.zip - Google ドライブ

Swift

入門書籍

絶対に挫折しない iPhoneアプリ開発「超」入門 増補改訂第5版
プログラミングが初めて!という人が小さなアプリを作ることで、アプリ開発を学ぶことができます。
「Swiftだけでなく、プログラミング自体が初めてなんだけど、どの本が良い?」と聞かれたときには、
この書籍をおすすめしています。

本気ではじめるiPhoneアプリ作り Xcode 8.x+Swift 3.x対応 (ヤフー黒帯シリーズ)
アプリ開発からApp Storeへの公開までの一通りを学ぶことができます。
入門書を2冊、3冊を読んだあとでこの書籍を読むとかなりの実力アップを感じることができます。

ただし、一通り学ぶことができますが、プログラミング初めてでこの書籍を選ぶことはオススメできません。
最初の方の内容はプログラミング初心者には理解が難しく、そこで勉強をやめてしまう可能性がありそうだと感じます。

Swiftポケットリファレンス
辞書として1冊は持ってても良い。

仕事でやれるレベルになるために

初心者から仕事でやれるレベルになるためにオススメできる日本語書籍がみつかりませんでした。
英語は苦手でも、書籍に書かれているソースはやさしく、読み進めることができます。

The iOS Apprentice (英語サイト・英語書籍)
Swift Apprentice (英語サイト・英語書籍)

平均的プログラマーを超えるために

詳解Swift 第3版
Swift3の書籍。第1版、第2版にもお世話になっています。
Swiftの文法についてとても詳しく書いてあります。

Ray Wenderlich | Tutorials for iPhone / iOS Developers and Gamers
QiitaのSwiftに関する記事