여러 방법이 있다. 하나씩 알아보자.
let startTime = DispatchTime.now()
// 측정하고자 하는 코드
let endTime = DispatchTime.now()
let elapsedTime = endTime.uptimeNanoseconds - startTime.uptimeNanoseconds
let elapsedTimeInMilliseconds = Double(elapsedTime) / 1_000_000
print("경과 시간: \(elapsedTimeInMilliseconds) 밀리초")
let startTime = CFAbsoluteTimeGetCurrent()
// 측정하고자 하는 코드
let endTime = CFAbsoluteTimeGetCurrent()
let elapsedTime = endTime - startTime
print("경과 시간: \(elapsedTime) 초")
let startTime = Date()
// 측정하고자 하는 코드
let endTime = Date()
let elapsedTime = endTime.timeIntervalSince(startTime)
print("경과 시간: \(elapsedTime) 초")
링크: https://augmentedcode.io/2021/05/24/an-overview-of-the-time-profiler-in-instruments/
Instruments의 Time Profiler는 앱의 실행 중에 발생하는 함수 호출 및 시스템 이벤트를 시간에 따라 기록하여 앱의 성능을 분석하는 도구이다.
(1) 수집된 데이터를 분석하여 각 함수의 실행 시간, 호출 횟수 등을 확인할 수 있다. 이를 통해 어떤 함수가 성능에 영향을 주는지 식별할 수 있다.
(2) Time Profiler는 함수 호출 트리 및 Flame Graph를 제공하여 시각적으로 함수 간의 관계를 이해할 수 있도록 도와준다.
(3) Time Profiler를 사용하여 성능 병목 현상을 찾고 코드를 최적화할 수 있다. 함수의 실행 시간이 긴 부분을 식별하여 성능 향상을 위한 개선 작업을 진행할 수 있다.
(4) Time Profiler는 앱 외부에서 발생한 시스템 이벤트도 기록하여 전반적인 환경을 이해하는 데 도움을 준다.