3/// A basic profiler for timing operations.
5/// This is based on some code written by JeremyP on Stack Overflow.
6/// See https://stackoverflow.com/a/24755958/1558022
9 private let start: DispatchTime
10 private var elapsed: DispatchTime
13 self.start = DispatchTime.now()
17 mutating func printTime(_ label: String) -> Void {
18 let now = DispatchTime.now()
20 let totalInterval = Double(now.uptimeNanoseconds - self.start.uptimeNanoseconds) / 1_000_000_000
21 let elapsedInterval = Double(now.uptimeNanoseconds - self.elapsed.uptimeNanoseconds) / 1_000_000_000
25 print("Time to \(label):\n \(elapsedInterval) seconds (\(totalInterval) total)")