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
*/