Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Benchmark_on_iOS
Search
to4iki
October 08, 2016
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Benchmark_on_iOS
https://github.com/to4iki/Benchmark
to4iki
October 08, 2016
More Decks by to4iki
See All by to4iki
Claude Code の活用事例
to4iki
0
190
Swift Concurrencyを利用したUIViewController表示の排他制御の実装
to4iki
0
3.8k
ケースに応じたUICollectionViewのレイアウト実装パターン
to4iki
1
5.8k
ビューインプレッションの計測方法
to4iki
1
1.2k
秘伝の `gitconfig`
to4iki
1
470
Abema iOS Architecture
to4iki
12
3.6k
timetable-bot
to4iki
0
15k
BLoC Pattern Introduction with Swift
to4iki
2
1.4k
nel
to4iki
0
200
Other Decks in Programming
See All in Programming
信頼性の目標を誰も求めてない
shubox
0
500
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
160
Family mrubyの進捗
kishima
1
110
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
150
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
200
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
2
290
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
160
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.4k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
430
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
700
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
WENDY [Excerpt]
tessaabrams
13
39k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Paper Plane (Part 1)
katiecoart
PRO
1
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
Transcript
Benchmark on iOS shinjyuku.lt #2 @to4iki
୭ʁ • @to4iki • GANMA!ͱ͍͏ອը৴ͷαʔϏεΛ࡞ͬͯ ͍·͢
Agenda • ՝ • Benchmarkͱ • BenchmarkΛͱΔ
՝ • iOSΞϓϦʹ͓͍ͯϖʔδද͕͍ࣔͷΛߴ Խ͍ͨ͠
ո͍͠ͱ͜Ζࢁ • HTTP௨৴ • JSONͷσγϦΞϥΠζ • ඳը(UITableView etc..) • ը૾ؔ࿈
• etc…
ݪҼΛಛఆ͢ΔͨΊͷࡐྉ͕ ඞཁ
ܭଌ͠Α͏
None
https://developer.apple.com/jp/documentation/ToolsLanguages/Conceptual/ Xcode_Overview/Debugging/MeasuringPerformance.html
XCTest#mesure
https://developer.apple.com/reference/xctest/xctestcase/1496290-measure
͍ॴ • ͬ͘͟Γͱͨ͠ಛఆͩͱInstrumentߴػೳ ͗͢Δ => ࡉཻ͔͍Ͱݟ͍ͨࡍʹ༗ޮ • XCTest#mesuretest࣮ߦͷ࣌ͷΈ͔͠ܭଌ Ͱ͖ͳ͍
ΑΓ”ࡶ”ʹݪҼΛಛఆ͍ͨ͠
Benchmark
Benchmark • ൺֱͷͨΊʹ༻͍Δࢦඪ • ਫ४ج४ • ଌྔʹ͓͍ͯ… • ௨ৗͰಈ͔ͳ͍ҐஔΛϕϯν”ϚʔΫ”ϙΠϯ τʹఆΊͦΕΛج४ͱͯ͠ݐɺߏͷҐஔ
ΛܾΊΔ
Benchmark(Programming) • ϥΠϒϥϦͷબఆɺγεςϜߏͷܾఆͳͲʹͨͬͯɺ୭͕ೲಘ Ͱ͖٬؍తͳஅΛԼ͢͜ͱΛՄೳͱ͢ΔࠜڌͱͳΔఆྔతͳࢦඪ • ಛఆͷॲཧΛऴ͑Δ·Ͱʹ͔͔Δ࣌ؒ • ಛఆͷ࣌ؒʹॲཧͰ͖ͨճ • ϝϞϦফඅྔͷਪҠ
• σΟεΫΞΫηεͷස • etc…
func measure(f: () -> Void) { let start = CACurrentMediaTime()
f() let end = CACurrentMediaTime() print("Time: \(end - start)") } // exc measure { aswesome() }
func measure<A>(f: () -> A) -> A { defer {
print("Time: \(end - start)") } let start = CACurrentMediaTime() let result = f() let end = CACurrentMediaTime() return result } // exc let result = measure { aswesome() }
࠷ݶͷࢦඪ • nճ࣮ߦͨ͠߹ͷ • ฏۉ࣮ߦ࣌ؒ • ඪ४ภࠩ(Β͖ͭ)
to4iki/Benchmark https://github.com/to4iki/Benchmark
None
to4iki/Benchmark • Inspired by Ruby Benchmark Module • Swift3.0 •
XCTest#measureʹد͍ͤͯΔ • ؆қతͳϝτϦΫεܭଌΛߦ͏
let time = Benchmark.realTime(label: "awesome: ") { sleep(3) } print(time)
// awesome: 0.030s let metrics = Benchmark.measure(label: "[awesome]") { awesome() } print(metrics) // [awesome] // average: 0.030s // STDDEV: 4%
let n = 100000 Benchmark.bm(labels: ["total: ", "ave: "]) {
(r: Benchmark.Report) -> [TimeInterval] in let ex1 = r.time(label: "for: ") { for i in 1...n { String(i) } } let ex2 = r.time(label: "forEach: ") { (1...n).forEach({ String($0) }) } let total = ex1.elapsed + ex2.elapsed let ave = total / 2 return [total, ave] } // for: 0.027s // forEach: 0.037s // total: 0.064s // ave: 0.032s
ͬͯΈͨ • ࣮ϓϩμΫτͷܭଌʹ༻ • ·ͩ·͍ͩʹ͍͘ൃݟ
• ϓϩμΫγϣϯίʔυʹϏδωεཁ݅Ҏ֎ͷ ίʔυΛຒΊࠐΈͨ͘ͳ͍ͷͰ • AOPͰܭଌ༻ͷϩάग़ྗΛ͍ͨ͠ (http://qiita.com/xaatw0/items/ 5876afa418d4b6467e4e) • ଌఆͷ։࢝ͱऴྃͷ໌ࣔతͳίϯτϩʔϧ
·ͱΊ • ·ͣ”ࡶ”ʹ”ܭଌ”(ݱঢ়ΛѲ͢ΔͨΊ) • ͦͷ͋ͱʹৄࡉΛ֬ೝ • ϕϯνϚʔΫΛऔΔࡍʹͲͷ؍ʹண͢Δ ͔Λ͖ͬΓͤ͞Α͏
Any Questions?
(͓·͚) Ͳ͏͍ͬͨνϡʔχϯάΛߦ͔ͬͨ • σʔλؒ௨৴ʹMessagePackΛ༻ͯ͠Έͨ • ίετʹରͯ͠ϖΠ͠ͳ͍ͷͰෆ࠾༻ • ࠶ඳըΛݮΒ͢Α͏ʹλΠϛϯάௐ • ߴ͞ܭࢉճస࣌ͷϩδοΫΛվम
• ಓʹίπίπͱϨΠΞτఆٛݟ͠