diff --git a/Sources/MandelbrotEngine/MandelbrotSet.swift b/Sources/MandelbrotEngine/MandelbrotSet.swift index f7c05ff..7299620 100644 --- a/Sources/MandelbrotEngine/MandelbrotSet.swift +++ b/Sources/MandelbrotEngine/MandelbrotSet.swift @@ -27,7 +27,7 @@ public struct MandelbrotSet { public var imageSize: (width: Int, height: Int) - public init(config: MandelbrotSetConfig, progress: Progress) { + public init(config: MandelbrotSetConfig, progress: Progress, timer: @escaping Timer.Action) { self.config = config let ys = Array(stride(from: config.yMin, to: config.yMax, by: config.dy)) let xs = Array(stride(from: config.xMin, to: config.xMax, by: config.dx)) @@ -35,7 +35,7 @@ public struct MandelbrotSet { grid.reserveCapacity(xs.count * ys.count) let progressHelper = ProgressHelper(steps: imageSize.height, progress: progress) - let timerHelper = TimerHelper() + let timerHelper = Timer(action: timer) for (i, y) in ys.enumerated() { for x in xs { diff --git a/Sources/MandelbrotEngine/TimerHelper.swift b/Sources/MandelbrotEngine/TimerHelper.swift index 63b639b..847112d 100644 --- a/Sources/MandelbrotEngine/TimerHelper.swift +++ b/Sources/MandelbrotEngine/TimerHelper.swift @@ -9,11 +9,16 @@ import Foundation -struct TimerHelper { +public struct Timer { + public typealias Action = (TimeInterval) -> Void + private let nano = 1_000_000_000.0 let start: DispatchTime + let action: Action + - init() { + init(action: @escaping Action) { + self.action = action self.start = DispatchTime.now() } @@ -21,6 +26,7 @@ struct TimerHelper { func end() { let e = DispatchTime.now() let dt = e.uptimeNanoseconds - start.uptimeNanoseconds - print(Double(dt) / nano) + let s = Double(dt) / nano + action(s) } }