Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Benchmark_on_iOS
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
180
Swift Concurrencyを利用したUIViewController表示の排他制御の実装
to4iki
0
3.7k
ケースに応じたUICollectionViewのレイアウト実装パターン
to4iki
1
5.7k
ビューインプレッションの計測方法
to4iki
1
1.1k
秘伝の `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
Inside Stream API
skrb
1
810
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
15
8.1k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
300
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.4k
The NotImplementedError Problem in Ruby
koic
1
990
Datadog LLM Observabilityで実現する 安全なLLM Usage 管理
3150
0
130
symfony/aiとlaravel/boost
77web
0
110
Oxlintのカスタムルールの現況
syumai
6
1.2k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Accessibility Awareness
sabderemane
1
150
My Coaching Mixtape
mlcsv
0
160
Exploring anti-patterns in Rails
aemeredith
3
430
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Test your architecture with Archunit
thirion
1
2.3k
Site-Speed That Sticks
csswizardry
13
1.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
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Λ༻ͯ͠Έͨ • ίετʹରͯ͠ϖΠ͠ͳ͍ͷͰෆ࠾༻ • ࠶ඳըΛݮΒ͢Α͏ʹλΠϛϯάௐ • ߴ͞ܭࢉճస࣌ͷϩδοΫΛվम
• ಓʹίπίπͱϨΠΞτఆٛݟ͠