一个轻量级的 Swift 计时库。Timely 让你能够轻松地计时代码块的执行时间。
Timely.time("Timer 1") { doSomething() }
let answer: String = Timely.time("Timer 2") { returnsAString("A", "B") }
Timely 包装你现有的代码并计时其执行。当需要性能测量时,可以很容易地插入到现有代码中。
然而,在 Timely 知道如何处理其测量结果之前,实际上不会进行任何计时。为了保持轻量级和高度可定制性,Timely 特意不对你希望如何处理计时数据做任何假设。要开始接收计时报告,你必须设置一个报告函数。
Timely.setReportFunction { timer, seconds in
// With the examples above, `timer` will be "Timer 1" and "Timer 2".
print("Timer with name \(timer) took \(seconds) seconds.")
}
这个闭包将在计时器完成之后同步执行。它的参数是刚刚执行的计时器的名称以及它测量的秒数。Timely 的测量精度与 Foundation 的 Date 类在执行平台上的精度一样。
你当然可以在报告函数中分发异步代码。你可能想聚合数据、记录它、将其写入文件、发送到 Splunk 实例等等。
如果你想停止 Timely 的计时(例如在测试期间),你可以调用
Timely.noop()
然后,Timely 将简单地执行传递给它的代码块,而无需任何计时或报告(就像在提供报告函数之前一样)。如果你想再次开始计时,只需传递另一个报告函数。
有时,你可能已经设置了 Timely 的报告函数,但想对特定的计时器使用不同的报告机制。这可以通过 `time` 方法的重载来实现,该重载仅将自定义报告函数应用于该计时器。
Timely.time("Timer", withReportFunction: CUSTOM_REPORT_FUNCTION) { doSomething() }
Timely 根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE.md。