SwiftExecutionTimer

SwiftExecutionTimer 包允许您测量特定代码段的执行时间。

安装

SwiftExecutionTimer 可以使用 Swift Package Manager 进行安装。

dependencies: [
        .package(url: "https://github.com/MichK1/SwiftExecutionTimer.git", exact: "0.1.0"),
    ]

使用

ExecutionTimer 类通过在代码执行期间的各个点添加标记来帮助测量执行时间。每个标记可以选择包含一个标签以提高清晰度。要添加标记,请调用 ExecutionTimer.mark() 方法。

特性

时间源

ExecutionTimer 支持两个时间源:

示例:测量排序时间

下面的示例测量对包含 1000 个随机 Double 值的数组进行排序所需的时间,重复 100 次。

import SwiftExecutionTimer

func runAndMeasure() {
    let executionTimer = ExecutionTimer() // Initialize the timer with the default `.monotonic` source
    
    (0..<100).forEach { trialIndex in
        executionTimer.mark("ARRAY INIT")      // Mark the beginning of array initialization.
        var array = (0..<1000).map { _ in Double.random(in: 0...1) }
        
        executionTimer.mark("SORT BEGIN")      // Mark the beginning of array sorting.
        array.sort()                           // Sort the array
        executionTimer.mark("SORT END")        // Mark the end of array sorting.
    }
    
    // Calculate durations for time intervals starting at "SORT BEGIN".
    let durations = executionTimer.durations(filter: .startLabel(.exact("SORT BEGIN")))
    let minTime = durations.min(by: { $0.duration < $1.duration })?.duration
    let maxTime = durations.max(by: { $0.duration < $1.duration })?.duration
    let sortingTime = executionTimer.sumDurations(filter: .startLabel(.exact("SORT BEGIN")))
    
    // Print results
    print("Sorting 100 arrays with 1000 Doubles took: \(sortingTime) seconds")
    print("Minimum sorting time: \(minTime ?? 0) seconds")
    print("Maximum sorting time: \(maxTime ?? 0) seconds")
}

更多示例

其他示例,例如排序执行时间比较,可以在 SortMeasure 示例中找到。

许可证

SwiftExecutionTimer 基于 MIT 许可证发布。 有关更多信息,请参见 LICENSE 文件。