结构体

struct BatchInputProvider

public struct BatchInputProvider<T> <: BenchInputProvider<T> {
    public BatchInputProvider(let builder: () -> T)
}

功能:输入提供程序,在执行之前在缓冲区中生成整个基准批次的输入。

父类型:

init(() -> T)

public BatchInputProvider(let builder: () -> T)

功能: 默认构造函数。

参数:

  • builder: () -> T - 用于生成基准测试输入的闭包。

mut func get(Int64)

public mut func get(idx: Int64): T

功能:获取元素,该函数的执行时间包含在基准测量中,然后作为框架开销计算的一部分从结果中排除。

参数:

  • idx : Int64 - 元素索引值。

返回值:

  • T - 元素值。

mut func reset(Int64)

public mut func reset(max: Int64)

功能:在基准测量之前调用。调用此函数后,后续的 get(i) 调用必须成功获取 [0, max) 中的 i

参数:

  • max : Int64 - 最大值。

struct BatchSizeOneInputProvider

public struct BatchSizeOneInputProvider<T> <: BenchInputProvider<T>{
    public BatchSizeOneInputProvider(let builder: () -> T)
}

功能:基准输入提供程序,在每次执行基准之前生成输入。 与 GenerateEachInputProvider 的区别在于,当批量大小为 1 时,我们可以测量。 每个基准测试调用都是独立的,因此输入生成永远不会包含在测量中。 如果 GenerateEachInputProvider 给出的结果质量较差,则应使用。 这种情况可能会发生,因为生成输入所需的时间比实际基准要多得多,或者如果输入生成的执行时间非常不稳定。

父类型:

init(() -> T)

public BatchSizeOneInputProvider(let builder: () -> T)

功能: 默认构造函数。

参数:

  • builder: () -> T - 用于生成基准测试输入的 lambda 。

mut func get(Int64)

public mut func get(idx: Int64): T

功能:获取元素,该函数的执行时间包含在基准测量中,然后作为框架开销计算的一部分从结果中排除。

参数:

  • idx : Int64 - 元素索引值。

返回值:

  • T - 元素值。

mut func reset(Int64)

public mut func reset(max: Int64)

功能:在基准测量之前调用。调用此函数后,后续的 get(i) 调用必须成功获取 [0, max) 中的 i

参数:

  • max : Int64 - 最大值。

struct CpuCycles

public struct CpuCycles <: Measurement {
    public prop conversionTable: MeasurementUnitTable
    public prop name: String
    public prop textDescription: String
    public func measure(): Float64
    public func setup()
}

功能:使用本机 rdtscp 指令测量 CPU 周期数。仅适用于 x86 平台。

父类型:

prop conversionTable

prop conversionTable: MeasurementUnitTable

功能:提供当前时间的单位换算表。 例如 [(1.0, "cycles")]。 详见 MeasurementUnitTable

类型:MeasurementUnitTable

prop name

prop name: String

功能:提供当前时间单位唯一的显示名称,例如:CpuCycles

类型:String

func measure()

public func measure(): Float64

功能:返回执行了多少个 CPU 周期。

返回值:

  • Float64 - 计算得到的数据,用于统计分析。

func setup()

public func setup()

功能:在测量前执行的配置动作。

struct GenerateEachInputProvider

public struct GenerateEachInputProvider<T> <: BenchInputProvider<T>{
    public GenerateEachInputProvider(let builder: () -> T)
}

功能:基准输入提供程序,在每次执行基准之前生成输入。 生成时间包含在基准测量中,然后作为框架开销计算的一部分从最终结果中排除。

父类型:

init(() -> T)

public GenerateEachInputProvider(let builder: () -> T)

功能: 默认构造函数。

参数:

  • builder: () -> T - 用于生成基准测试输入的闭包。

mut func get(Int64)

public mut func get(idx: Int64): T

功能:获取元素,该函数的执行时间包含在基准测量中,然后作为框架开销计算的一部分从结果中排除。

参数:

  • idx : Int64 - 元素索引值。

返回值:

  • T - 元素值。

mut func reset(Int64)

public mut func reset(max: Int64)

功能:在基准测量之前调用。调用此函数后,后续的 get(i) 调用必须成功获取 [0, max) 中的 i

参数:

  • max : Int64 - 最大值。

struct ImmutableInputProvider

public struct ImmutableInputProvider<T> <: BenchInputProvider<T> {
    public ImmutableInputProvider(let data: T)
}

功能:最简单的输入提供程序,只需为基准测试的每次调用复制数据。适用于基准测试不会改变输入的情况。它在框架内默认使用。

父类型:

init(T)

public ImmutableInputProvider(let data: T)

功能: 默认构造函数。

参数:

  • data: T - 基准测试的输入。

mut func get(Int64)

public mut func get(idx: Int64): T

功能:获取元素,该函数的执行时间包含在基准测量中,然后作为框架开销计算的一部分从结果中排除。

参数:

  • idx : Int64 - 元素索引值。

返回值:

  • T - 元素值。

static func createOrExisting(T, Int64)

public static func createOrExisting(arg: T, x!:Int64=0): ImmutableInputProvider<T>

功能:创建或获取一个 ImmutableInputProvider 对象。

参数:

  • arg : T - 提供器需复制的参数。
  • x!: Int64 - 为实现重载而增加的参数。

返回值:

  • ImmutableInputProvider<T> - 输入提供器。

static func createOrExisting<U>(U): U where U <: BenchInputProvider<T>

public static func createOrExisting<U>(arg: U): U where U <: BenchInputProvider<T>

功能:创建或获取一个 BenchInputProvider 的子类型对象。

参数:

  • arg : T - 提供器需复制的参数。

返回值:

  • U where U <: BenchInputProvider<T> - 输入提供器。

struct Perf

public struct Perf <: Measurement {
    public prop conversionTable: MeasurementUnitTable
    public prop name: String
    public prop textDescription: String
    public init()
    public init(counter: PerfCounter)
    public func measure(): Float64
    public func setup()
}

功能:使用linux 系统调用 perf_event_open 测量各种硬件和软件 CPU 计数器。仅在 Linux 上可用。

父类型:

prop conversionTable

prop conversionTable: MeasurementUnitTable

功能:提供对应 CPU 计数器的换算表。

类型:MeasurementUnitTable

prop name

prop name: String

功能:为当前CPU计数器提供唯一的显示名称,例如:Perf(cycles)

类型:String

init()

public init()

功能:使用 CPU 周期计数器的默认构造函数。

init(PerfCounter)

public init(counter: PerfCounter)

功能:指定要测量的 CPU 计数器的构造函数。

参数:

func measure()

public func measure(): Float64

功能:返回指定 CPU 计数器的值。

返回值:

  • Float64 - 计算得到的数据,用于统计分析。

func setup()

func setup()

功能:此 CPU 计数器的初始化例程。在每个基准步骤之前调用。

struct TimeNow

public struct TimeNow <: Measurement {
    public prop conversionTable: MeasurementUnitTable
    public prop name: String
    public prop textDescription: String
    public init()
    public init(unit: ?TimeUnit)
}

功能:Measurement 的实现,用于测量执行一个函数所花费的时间。

父类型:

prop conversionTable

prop conversionTable: MeasurementUnitTable

功能:提供当前时间的单位换算表。 例如 [(1.0, "ns"), (1e3, "us"), (1e6, "ms"), (1e9, "s")]。 详见 MeasurementUnitTable

类型:MeasurementUnitTable

prop name

prop name: String

功能:提供当前时间单位唯一的显示名称,例如:Duration(ns)Duration(s)

类型:String

prop textDescription

prop textDescription: String

功能:描述此测量的简单文本将显示在某些报告中。

类型:String

init()

public init()

功能:自动选择输出格式的默认构造函数。

init(?TimeUnit)

public init(unit: ?TimeUnit) 

功能: unit 参数用于指定打印结果时将使用的时间单位。

参数:

  • unit: ?TimeUnit - 指定的时间单位。

func measure()

public func measure(): Float64

功能:获取当前时间用于统计分析。

返回值:

  • Float64 - 计算得到的数据,用于统计分析。