SlideShare a Scribd company logo
1 of 23
Download to read offline
測れる!パフォーマンス 
Copyright © Classmethod, Inc. 
〜~ Xcode 6 〜~
• 名前:深澤 豪(ふかさわ たけし) 
• 所属:iPhoneアプリサービス事業部 
• 星座:やぎ座 AB型 
• 役割:プロジェクトマネージャー 
• ⽬目標:お客様と開発者の間に薄く⼊入って、 
お互いが満⾜足できるものを届ける 
Copyright © Classmethod, Inc. 
⾃自⼰己紹介
※ Botsの話しをするつもりでしたが、YosemiteとServer 4.0 
は未だリリースされない事に気づいたので、やめました。 
Copyright © Classmethod, Inc. 
ごめんなさい。
重い処理理ってなんじゃろ 
例例えば… 
・⼤大量量データのソートなどの処理理 
・画像などのエンコード/デコード 
・暗号化処理理 
Copyright © Classmethod, Inc.
⾃自動テストで数値化して 
判定できる仕組みができた! 
Copyright © Classmethod, Inc. 
重い処理理を
Testクラスのself.measureBlock(){} 
内が計測の対象になる。 
Copyright © Classmethod, Inc. 
何処に書くか 
func testPerformanceExample() { 
// This is an example of a performance test case. 
self.measureBlock() { 
// Put the code you want to measure the time of here. 
} 
}
今回の計測されるFunction 
class Logger { 
let max = 10000 
func writeNSLog(){ 
for var i = 0; i < max; i++ { 
NSLog("%d",i) 
} 
} 
func writePrintln(){ 
for var i = 0; i < max; i++ { 
println(NSDate.date().description + " " + String(i)) 
} 
} 
NSLogとPrintlnで1万回の書き出しを比較 
Copyright © Classmethod, Inc.
今回のテストクラス 
import XCTest 
class BotsTests: XCTestCase { 
… 
func testLoggerPrintln() { 
let logger = Logger() 
self.measureBlock() { 
logger.writePrintln() 
} 
} 
func testLoggerNSLog() { 
let logger = Logger() 
self.measureBlock() { 
logger.writeNSLog() 
} 
NSLog} 
とPrintlnで1万回の書き出しを比較 
} 
Copyright © Classmethod, Inc.
テストの実⾏行行⽅方法 
ユニットテストと同様にTest Navigatorや⌘Uで 
実行可能。 
Copyright © Classmethod, Inc.
どう計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
10回計測している
何を計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
Result:結果 
Average: 
処理理時間の平均値 
Baseline: 
評価の基準となる値 
Max STDDEV: 
標準偏差の最⼤大値
何を計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
1回⽬目の処理理時間は 
3.006秒。 
平均値が2.09秒なので 
43.48%遅い。
標準偏差って何? 
どれだけデータがバラけているかの指標。 
例例えば”10%”なら、ばらつきの平均は平均値 
(Avarage)から⾒見見て10%という意味。 
Standard Deviation 
Copyright © Classmethod, Inc.
Copyright © Classmethod, Inc. 
評価させる⽅方法 
“No Baseline” と表⽰示され 
ているので、”Set 
Baseline” ボタンを押す 
と”Baseline”に計測した平 
均値が⼊入る。
Copyright © Classmethod, Inc. 
評価させる⽅方法 
“No Baseline” と表⽰示され 
ているので、”Set 
Baseline” ボタンを押す 
と”Baseline”に計測した平 
均値が⼊入る。
Copyright © Classmethod, Inc. 
評価のされ⽅方 
“Baseline”を設定した後に 
再度度計測すると”Result”に 
値が表⽰示される。 
何か評価された!
Result: 20.788% better (±17%) 
Baselineよりも 20.788% ⾼高速だった。 
また、標準偏差は±17%だった。 
Copyright © Classmethod, Inc. 
評価のされ⽅方
評価のされ⽅方 
テスト成功の条件 
• Max STDDEV(標準偏差の最⼤大値) を超えない 
= ばらつきの⼤大きいテストは失敗 
Copyright © Classmethod, Inc. 
AND 
• Baseline(基準値)より早い時間で処理理が終わる 
= 遅いと失敗
Copyright © Classmethod, Inc. 
注意点 
シミュレータ/実機の種類によって結果は異異なるの 
で、ターゲットとする実機で測定した⽅方が良良い。
NSLogとprintlnでそれぞれ1万回の実行結果を計 
測してみました。 
println(i) -> 0.35秒 
NSLog(“%d”,i) → 2.3秒 
Copyright © Classmethod, Inc. 
ちなみに 
println だけなら7倍位はやい。
• パフォーマンスを計測するって楽しい。 
• Botsでも回せます。 
• 実機で実⾏行行するように。 
Copyright © Classmethod, Inc. 
まとめ
ご静聴、ありがとうございました。 
Copyright © Classmethod, Inc.
[iOS 8] 測れる!パフォーマンス

More Related Content

Similar to [iOS 8] 測れる!パフォーマンス

iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようToshiyuki Hirata
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法Toshiyuki Hirata
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ陽平 山口
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDDTakuto Wada
 
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~Insight Technology, Inc.
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方Hiroyuki Tanaka
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン友隆 浅黄
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
モデル最適化指標・評価指標の選び方
モデル最適化指標・評価指標の選び方モデル最適化指標・評価指標の選び方
モデル最適化指標・評価指標の選び方幹雄 小川
 

Similar to [iOS 8] 測れる!パフォーマンス (20)

iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
 
Tdd
TddTdd
Tdd
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
CMSI計算科学技術特論C (2015) OpenMX とDFT②
CMSI計算科学技術特論C (2015) OpenMX とDFT②CMSI計算科学技術特論C (2015) OpenMX とDFT②
CMSI計算科学技術特論C (2015) OpenMX とDFT②
 
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
モデル最適化指標・評価指標の選び方
モデル最適化指標・評価指標の選び方モデル最適化指標・評価指標の選び方
モデル最適化指標・評価指標の選び方
 

[iOS 8] 測れる!パフォーマンス