How to get accurate ticks from a timer (high‑resolution timer) in Swift

1 Answer

0 votes
import Foundation

// Start timer (nanoseconds)
let start = DispatchTime.now().uptimeNanoseconds

// Do some work
for _ in 0..<1_000_000 {
    // simple loop
}

// Stop timer
let end = DispatchTime.now().uptimeNanoseconds

// Raw ticks (nanoseconds)
let ticks = end - start

// Convert to time units
let nanoseconds  = Double(ticks)
let microseconds = nanoseconds / 1_000.0
let milliseconds = nanoseconds / 1_000_000.0
let seconds      = nanoseconds / 1_000_000_000.0

// Frequency (ticks per second)
let frequency: UInt64 = 1_000_000_000 // 1 tick = 1 nanosecond

// Print results
print("Elapsed ticks (ns): \(ticks)")
print("Elapsed ms: \(milliseconds)")
print("Elapsed us: \(microseconds)")
print("Elapsed seconds: \(seconds)")
print("Timer frequency: \(frequency) Hz")



/*
run:

Elapsed ticks (ns): 2266979
Elapsed ms: 2.266979
Elapsed us: 2266.979
Elapsed seconds: 0.002266979
Timer frequency: 1000000000 Hz

*/

 



answered May 9 by avibootz
...