A made a tiny spm package to measure code execution time:
[To see links please register here]
Example of use
Measure.start("create-user")
let user = User()
Measure.finish("create-user")
Console output:
⏲ Measure [create-user]: 0.00521 sec.
Measure async request
Measure.start("request")
let url = URL(string: "https://httpbin.org/get")!
URLSession.shared.dataTask(with: url) { _, _, _ in
let time = Measure.finish("request")
Analytics.send(event: "Request", ["time" => time])
}.resume()
Full code of package:
// Mezhevikin Alexey:
[To see links please register here]
import Foundation
public class Measure {
static private var starts = [String: Double]()
static public func start(_ key: String) {
starts[key] = CFAbsoluteTimeGetCurrent()
}
@discardableResult
static public func finish(_ key: String) -> Double {
guard let start = starts[key] else {
print("🛑 Key [\(key)] not found")
return 0
}
let time = CFAbsoluteTimeGetCurrent() - start
print(String(format: "⏲ Measure [\(key)]: %.5f sec.", time))
starts.removeValue(forKey: key)
return time
}
}