Skip to content

Instantly share code, notes, and snippets.

@jakjothi
Forked from jstn/Timer.swift
Created June 26, 2016 18:39
Show Gist options
  • Save jakjothi/fd75ec7fb968efc0d7b3156f6dbd9951 to your computer and use it in GitHub Desktop.
Save jakjothi/fd75ec7fb968efc0d7b3156f6dbd9951 to your computer and use it in GitHub Desktop.
simple nanosecond timer using mach_absolute_time
/*
var t = Timer()
t.start()
// do something
t.stop()
println("took \(t.seconds)")
*/
import Darwin
struct Timer {
static var base: UInt64 = 0
var startTime: UInt64 = 0
var stopTime: UInt64 = 0
init() {
if Timer.base == 0 {
var info = mach_timebase_info(numer: 0, denom: 0)
mach_timebase_info(&info)
Timer.base = UInt64(info.numer / info.denom)
}
}
mutating func start() {
startTime = mach_absolute_time()
}
mutating func stop() {
stopTime = mach_absolute_time()
}
var nanoseconds: UInt64 {
return stopTime - startTime * Timer.base
}
var milliseconds: Double {
return Double(nanoseconds) / 1_000_000
}
var seconds: Double {
return Double(nanoseconds) / 1_000_000_000
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment