Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
測れる!パフォーマンス 
Copyright © Classmethod, Inc. 
〜~ Xcode 6 〜~
• 名前:深澤 豪(ふかさわ たけし) 
• 所属:iPhoneアプリサービス事業部 
• 星座:やぎ座 AB型 
• 役割:プロジェクトマネージャー 
• ⽬目標:お客様と開発者の間に薄く⼊入って、 
お互いが満⾜足できるものを届ける 
Co...
※ Botsの話しをするつもりでしたが、YosemiteとServer 4.0 
は未だリリースされない事に気づいたので、やめました。 
Copyright © Classmethod, Inc. 
ごめんなさい。
重い処理理ってなんじゃろ 
例例えば… 
・⼤大量量データのソートなどの処理理 
・画像などのエンコード/デコード 
・暗号化処理理 
Copyright © Classmethod, Inc.
⾃自動テストで数値化して 
判定できる仕組みができた! 
Copyright © Classmethod, Inc. 
重い処理理を
Testクラスのself.measureBlock(){} 
内が計測の対象になる。 
Copyright © Classmethod, Inc. 
何処に書くか 
func testPerformanceExample() { 
// Thi...
今回の計測されるFunction 
class Logger { 
let max = 10000 
func writeNSLog(){ 
for var i = 0; i < max; i++ { 
NSLog("%d",i) 
} 
} ...
今回のテストクラス 
import XCTest 
class BotsTests: XCTestCase { 
… 
func testLoggerPrintln() { 
let logger = Logger() 
self.measur...
テストの実⾏行行⽅方法 
ユニットテストと同様にTest Navigatorや⌘Uで 
実行可能。 
Copyright © Classmethod, Inc.
どう計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
10回計測している
何を計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
Result:結果 
Average: 
処理理時間の平均値 
Baseline: 
評価の基準となる値 ...
何を計測しているか 
• 10回計測する。 
• 平均と標準偏差を出す。 
Copyright © Classmethod, Inc. 
1回⽬目の処理理時間は 
3.006秒。 
平均値が2.09秒なので 
43.48%遅い。
標準偏差って何? 
どれだけデータがバラけているかの指標。 
例例えば”10%”なら、ばらつきの平均は平均値 
(Avarage)から⾒見見て10%という意味。 
Standard Deviation 
Copyright © Classmet...
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. 
ちなみに 
pr...
• パフォーマンスを計測するって楽しい。 
• Botsでも回せます。 
• 実機で実⾏行行するように。 
Copyright © Classmethod, Inc. 
まとめ
ご静聴、ありがとうございました。 
Copyright © Classmethod, Inc.
[iOS 8] 測れる!パフォーマンス
Upcoming SlideShare
Loading in …5
×

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

5,936 views

Published on

Xcode 6 から追加されたパフォーマンス測定の機能を紹介します。

Published in: Software
  • Be the first to comment

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

  1. 1. 測れる!パフォーマンス Copyright © Classmethod, Inc. 〜~ Xcode 6 〜~
  2. 2. • 名前:深澤 豪(ふかさわ たけし) • 所属:iPhoneアプリサービス事業部 • 星座:やぎ座 AB型 • 役割:プロジェクトマネージャー • ⽬目標:お客様と開発者の間に薄く⼊入って、 お互いが満⾜足できるものを届ける Copyright © Classmethod, Inc. ⾃自⼰己紹介
  3. 3. ※ Botsの話しをするつもりでしたが、YosemiteとServer 4.0 は未だリリースされない事に気づいたので、やめました。 Copyright © Classmethod, Inc. ごめんなさい。
  4. 4. 重い処理理ってなんじゃろ 例例えば… ・⼤大量量データのソートなどの処理理 ・画像などのエンコード/デコード ・暗号化処理理 Copyright © Classmethod, Inc.
  5. 5. ⾃自動テストで数値化して 判定できる仕組みができた! Copyright © Classmethod, Inc. 重い処理理を
  6. 6. 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. } }
  7. 7. 今回の計測される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.
  8. 8. 今回のテストクラス 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.
  9. 9. テストの実⾏行行⽅方法 ユニットテストと同様にTest Navigatorや⌘Uで 実行可能。 Copyright © Classmethod, Inc.
  10. 10. どう計測しているか • 10回計測する。 • 平均と標準偏差を出す。 Copyright © Classmethod, Inc. 10回計測している
  11. 11. 何を計測しているか • 10回計測する。 • 平均と標準偏差を出す。 Copyright © Classmethod, Inc. Result:結果 Average: 処理理時間の平均値 Baseline: 評価の基準となる値 Max STDDEV: 標準偏差の最⼤大値
  12. 12. 何を計測しているか • 10回計測する。 • 平均と標準偏差を出す。 Copyright © Classmethod, Inc. 1回⽬目の処理理時間は 3.006秒。 平均値が2.09秒なので 43.48%遅い。
  13. 13. 標準偏差って何? どれだけデータがバラけているかの指標。 例例えば”10%”なら、ばらつきの平均は平均値 (Avarage)から⾒見見て10%という意味。 Standard Deviation Copyright © Classmethod, Inc.
  14. 14. Copyright © Classmethod, Inc. 評価させる⽅方法 “No Baseline” と表⽰示され ているので、”Set Baseline” ボタンを押す と”Baseline”に計測した平 均値が⼊入る。
  15. 15. Copyright © Classmethod, Inc. 評価させる⽅方法 “No Baseline” と表⽰示され ているので、”Set Baseline” ボタンを押す と”Baseline”に計測した平 均値が⼊入る。
  16. 16. Copyright © Classmethod, Inc. 評価のされ⽅方 “Baseline”を設定した後に 再度度計測すると”Result”に 値が表⽰示される。 何か評価された!
  17. 17. Result: 20.788% better (±17%) Baselineよりも 20.788% ⾼高速だった。 また、標準偏差は±17%だった。 Copyright © Classmethod, Inc. 評価のされ⽅方
  18. 18. 評価のされ⽅方 テスト成功の条件 • Max STDDEV(標準偏差の最⼤大値) を超えない = ばらつきの⼤大きいテストは失敗 Copyright © Classmethod, Inc. AND • Baseline(基準値)より早い時間で処理理が終わる = 遅いと失敗
  19. 19. Copyright © Classmethod, Inc. 注意点 シミュレータ/実機の種類によって結果は異異なるの で、ターゲットとする実機で測定した⽅方が良良い。
  20. 20. NSLogとprintlnでそれぞれ1万回の実行結果を計 測してみました。 println(i) -> 0.35秒 NSLog(“%d”,i) → 2.3秒 Copyright © Classmethod, Inc. ちなみに println だけなら7倍位はやい。
  21. 21. • パフォーマンスを計測するって楽しい。 • Botsでも回せます。 • 実機で実⾏行行するように。 Copyright © Classmethod, Inc. まとめ
  22. 22. ご静聴、ありがとうございました。 Copyright © Classmethod, Inc.

×