Skip to content

Instantly share code, notes, and snippets.

@kristopherjohnson
Last active January 16, 2020 07:05
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save kristopherjohnson/4201fbe86473f6edb207 to your computer and use it in GitHub Desktop.
Save kristopherjohnson/4201fbe86473f6edb207 to your computer and use it in GitHub Desktop.
Calculate execution time for a block of Swift code
import QuartzCore
func executionTimeInterval(block: () -> ()) -> CFTimeInterval {
let start = CACurrentMediaTime()
block();
let end = CACurrentMediaTime()
return end - start
}
// DEMO (paste all this into a playground)
// Non-memoized Fibonacci generator
func fib(n: Int) -> Int {
assert(n >= 0)
switch n {
case 0, 1: return 1
default: return fib(n-1) + fib(n-2)
}
}
let fib8 = executionTimeInterval {
let x = fib(8)
println("fib(8) = \(x)")
}
let fib10 = executionTimeInterval {
let x = fib(10)
println("fib(10) = \(x)")
}
let fib12 = executionTimeInterval {
let x = fib(12)
println("fib(12) = \(x)")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment