Skip to content

Instantly share code, notes, and snippets.

@acadet
Forked from jstn/Timer.swift
Created January 26, 2016 00:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acadet/4ad0557e07a855c84981 to your computer and use it in GitHub Desktop.
Save acadet/4ad0557e07a855c84981 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