Skip to content

Instantly share code, notes, and snippets.

@niwatako
Created June 19, 2018 11:11
Show Gist options
  • Save niwatako/3828eed349163db50a73e968c47c13b7 to your computer and use it in GitHub Desktop.
Save niwatako/3828eed349163db50a73e968c47c13b7 to your computer and use it in GitHub Desktop.
Measuring Performance Using Logging #roppongiswift #CodePiece
### 関さん(@takasek)Measuring Performance Using Logging
> コードたくさん出てきて記録むずいのでセッションビデオと一緒に見てくれ!!
Measuring Performance Using Logging - WWDC 2018 - Videos - Apple Developer
https://developer.apple.com/videos/play/wwdc2018/405/
os_log というものがあります。WWDC2016から導入された。
2018からsignpost
Instrumentsでパフォーマンス計測に使えるように拡張されて軽いのでどんどん使ってくださいとのこと。
ループを計測したいとき、
import os.signpost
for element in panel.elements {
os_signpost(type: .bigin, log: refreshLog, name: "")
fetchAsset(for: element)
os_signpost(type: .bigin, log: refreshLog, name: "")
}
処理全体を計測したいときは?
nameを変えて挟めばいい。
非同期処理は?
→ signpostId をつけられる。
fetchAssetAsync(for: element) {
os_signpost(type: .end, log:, name:, signpostId:)
}
Metadataを付加することもできる。
らしいけど、実際使ってみるとうまく動いていない様子。InstrumentsのMetadataStatasticsに出てこない。
begin と end だけでない場合は?
.event が用意されている。
ログをOffにしたいとき
OSLog に disable を設定する、
ログのためにコストの掛かる処理をしている場合、.enabledをみて処理をするか切り分ける。
Instruments → Blank → + → "os_signpost"
Points of Interest
Custom Instrument
- Metadataが取れない?
- OSSignpostIDを使ったsignpostがうまく動かない?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment