Skip to content

Commit

Permalink
benchmarks: Add subdirectory Benchmarks/ package
Browse files Browse the repository at this point in the history
  • Loading branch information
simonjbeaumont committed Oct 2, 2024
1 parent f795237 commit 7e6decf
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ xcuserdata/
DerivedData/
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.vscode
/Package.resolved
Package.resolved
.ci/
.docc-build/
.swiftpm
2 changes: 1 addition & 1 deletion .licenseignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
.github/
**.md
**.txt
Package.swift
**Package.swift
docker/*
2 changes: 1 addition & 1 deletion .swiftformatignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Package.swift
**Package.swift
61 changes: 61 additions & 0 deletions Benchmarks/Benchmarks/OpenAPIRuntimeBenchmarks/Benchmarks.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the SwiftOpenAPIGenerator open source project
//
// Copyright (c) 2024 Apple Inc. and the SwiftOpenAPIGenerator project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of SwiftOpenAPIGenerator project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import Benchmark
import OpenAPIRuntime
import Foundation

let benchmarks = {
let defaultMetrics: [BenchmarkMetric] = [.mallocCountTotal, .cpuTotal]

Benchmark(
"ISO8601DateTranscoder.encode(_:)",
configuration: Benchmark.Configuration(
metrics: defaultMetrics,
scalingFactor: .kilo,
maxDuration: .seconds(10_000_000),
maxIterations: 5
)
) { benchmark in
let transcoder = ISO8601DateTranscoder()
benchmark.startMeasurement()
for _ in benchmark.scaledIterations { blackHole(try transcoder.encode(.distantFuture)) }
}

Benchmark(
"ISO8601DateFormatter.string(from:)",
configuration: Benchmark.Configuration(
metrics: defaultMetrics,
scalingFactor: .kilo,
maxDuration: .seconds(10_000_000),
maxIterations: 5
)
) { benchmark in
let formatter = ISO8601DateFormatter()
benchmark.startMeasurement()
for _ in benchmark.scaledIterations { blackHole(formatter.string(from: .distantFuture)) }
}

Benchmark(
"Date.ISO8601Format(_:)",
configuration: Benchmark.Configuration(
metrics: defaultMetrics,
scalingFactor: .kilo,
maxDuration: .seconds(10_000_000),
maxIterations: 5
)
) { benchmark in
benchmark.startMeasurement()
for _ in benchmark.scaledIterations { blackHole(Date.distantFuture.ISO8601Format()) }
}
}
24 changes: 24 additions & 0 deletions Benchmarks/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "swift-openapi-runtime-benchmarks",
platforms: [ .macOS("14") ],
dependencies: [
.package(name: "swift-openapi-runtime", path: "../"),
.package(url: "https://github.com/ordo-one/package-benchmark.git", from: "1.22.0"),
],
targets: [
.executableTarget(
name: "OpenAPIRuntimeBenchmarks",
dependencies: [
.product(name: "Benchmark", package: "package-benchmark"),
.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"),
],
path: "Benchmarks/OpenAPIRuntimeBenchmarks",
plugins: [
.plugin(name: "BenchmarkPlugin", package: "package-benchmark")
]
),
]
)

0 comments on commit 7e6decf

Please sign in to comment.