// Measuring function execution time in
// Swift using a reusable Timer (milliseconds + seconds)
import Foundation
// ---------------------------
// Reusable Timer struct
// ---------------------------
struct TimerSwift {
private var start: UInt64 = 0
private var end: UInt64 = 0
// Start the timer
mutating func startTimer() {
start = DispatchTime.now().uptimeNanoseconds // high‑precision timer
}
// Stop the timer
mutating func stopTimer() {
end = DispatchTime.now().uptimeNanoseconds
}
// Return elapsed time in milliseconds
func elapsedMilliseconds() -> Double {
return Double(end - start) / 1_000_000.0
}
// Return elapsed time in seconds
func elapsedSeconds() -> Double {
return Double(end - start) / 1_000_000_000.0
}
}
// ---------------------------
// Function to measure
// ---------------------------
func work() {
var sum: UInt64 = 0
for i in 0..<100_000_000 {
sum += UInt64(i)
}
}
// ---------------------------
// Main program
// ---------------------------
var t = TimerSwift()
t.startTimer()
work()
t.stopTimer()
let ms = t.elapsedMilliseconds()
let sec = t.elapsedSeconds()
print("Execution time: \(ms) ms")
print("Execution time: \(sec) seconds")
/*
run:
Execution time: 13841.738432 ms
Execution time: 13.841738432 seconds
*/