Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 50e3f17

Browse files
committedJul 30, 2024·
Foundation import workaround
- also fixes issue with `autoreleasepool()`
1 parent d063f21 commit 50e3f17

File tree

4 files changed

+55
-21
lines changed

4 files changed

+55
-21
lines changed
 

‎Benchmarks/Benchmarks/DataIO/BenchmarkDataIO.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import func Benchmark.blackHole
1616
#if FOUNDATION_FRAMEWORK
1717
import Foundation
1818
#else
19-
@testable import FoundationEssentials
19+
import FoundationEssentials
20+
import FoundationBenchmarkSupport
2021
#endif
2122

2223

‎Benchmarks/Benchmarks/String/BenchmarkString.swift

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ import func Benchmark.blackHole
1717
import Foundation
1818
#else
1919
import FoundationEssentials
20+
import FoundationBenchmarkSupport
21+
#endif
22+
23+
#if FOUNDATION_FRAMEWORK
24+
private typealias Encoding = String.Encoding
25+
#else
26+
private typealias Encoding = FoundationEssentialsStringEncoding
2027
#endif
2128

2229
let benchmarks = {
@@ -85,21 +92,21 @@ let benchmarks = {
8592
Benchmark("utf16-decode", configuration: .init(warmupIterations: 1, scalingFactor: .kilo)) { benchmark in
8693
for _ in benchmark.scaledIterations {
8794
autoreleasepool {
88-
blackHole(String(bytes: asciiSmallStrDataUTF16BE, encoding: .utf16BigEndian))
89-
blackHole(String(bytes: nonAsciiSmallStrDataUTF16BE, encoding: .utf16BigEndian))
95+
blackHole(String(bytes: asciiSmallStrDataUTF16BE, encoding: Encoding.utf16BigEndian))
96+
blackHole(String(bytes: nonAsciiSmallStrDataUTF16BE, encoding: Encoding.utf16BigEndian))
9097

91-
blackHole(String(bytes: asciiLargeStrDataUTF16BE, encoding: .utf16BigEndian))
92-
blackHole(String(bytes: nonAsciiLargeStrDataUTF16BE, encoding: .utf16BigEndian))
98+
blackHole(String(bytes: asciiLargeStrDataUTF16BE, encoding: Encoding.utf16BigEndian))
99+
blackHole(String(bytes: nonAsciiLargeStrDataUTF16BE, encoding: Encoding.utf16BigEndian))
93100

94-
blackHole(String(bytes: asciiSmallStrDataUTF16LE, encoding: .utf16LittleEndian))
95-
blackHole(String(bytes: nonAsciiSmallStrDataUTF16LE, encoding: .utf16LittleEndian))
101+
blackHole(String(bytes: asciiSmallStrDataUTF16LE, encoding: Encoding.utf16LittleEndian))
102+
blackHole(String(bytes: nonAsciiSmallStrDataUTF16LE, encoding: Encoding.utf16LittleEndian))
96103

97-
blackHole(String(bytes: asciiLargeStrDataUTF16LE, encoding: .utf16LittleEndian))
98-
blackHole(String(bytes: nonAsciiLargeStrDataUTF16LE, encoding: .utf16LittleEndian))
104+
blackHole(String(bytes: asciiLargeStrDataUTF16LE, encoding: Encoding.utf16LittleEndian))
105+
blackHole(String(bytes: nonAsciiLargeStrDataUTF16LE, encoding: Encoding.utf16LittleEndian))
99106

100107
// Use big endian input data with plain utf16 to get a valid string.
101-
blackHole(String(bytes: asciiLargeStrDataUTF16BE, encoding: .utf16))
102-
blackHole(String(bytes: nonAsciiLargeStrDataUTF16BE, encoding: .utf16))
108+
blackHole(String(bytes: asciiLargeStrDataUTF16BE, encoding: Encoding.utf16))
109+
blackHole(String(bytes: nonAsciiLargeStrDataUTF16BE, encoding: Encoding.utf16))
103110
}
104111
}
105112
}
@@ -130,21 +137,21 @@ let benchmarks = {
130137
Benchmark("utf32-decode", configuration: .init(warmupIterations: 1, scalingFactor: .kilo)) { benchmark in
131138
for _ in benchmark.scaledIterations {
132139
autoreleasepool {
133-
blackHole(String(bytes: asciiSmallStrDataUTF32BE, encoding: .utf32BigEndian))
134-
blackHole(String(bytes: nonAsciiSmallStrDataUTF32BE, encoding: .utf32BigEndian))
140+
blackHole(String(bytes: asciiSmallStrDataUTF32BE, encoding: Encoding.utf32BigEndian))
141+
blackHole(String(bytes: nonAsciiSmallStrDataUTF32BE, encoding: Encoding.utf32BigEndian))
135142

136-
blackHole(String(bytes: asciiLargeStrDataUTF32BE, encoding: .utf32BigEndian))
137-
blackHole(String(bytes: nonAsciiLargeStrDataUTF32BE, encoding: .utf32BigEndian))
143+
blackHole(String(bytes: asciiLargeStrDataUTF32BE, encoding: Encoding.utf32BigEndian))
144+
blackHole(String(bytes: nonAsciiLargeStrDataUTF32BE, encoding: Encoding.utf32BigEndian))
138145

139-
blackHole(String(bytes: asciiSmallStrDataUTF32LE, encoding: .utf32LittleEndian))
140-
blackHole(String(bytes: nonAsciiSmallStrDataUTF32LE, encoding: .utf32LittleEndian))
146+
blackHole(String(bytes: asciiSmallStrDataUTF32LE, encoding: Encoding.utf32LittleEndian))
147+
blackHole(String(bytes: nonAsciiSmallStrDataUTF32LE, encoding: Encoding.utf32LittleEndian))
141148

142-
blackHole(String(bytes: asciiLargeStrDataUTF32LE, encoding: .utf32LittleEndian))
143-
blackHole(String(bytes: nonAsciiLargeStrDataUTF32LE, encoding: .utf32LittleEndian))
149+
blackHole(String(bytes: asciiLargeStrDataUTF32LE, encoding: Encoding.utf32LittleEndian))
150+
blackHole(String(bytes: nonAsciiLargeStrDataUTF32LE, encoding: Encoding.utf32LittleEndian))
144151

145152
// Use big endian input data with plain UTF32 to get a valid string.
146-
blackHole(String(bytes: asciiLargeStrDataUTF32BE, encoding: .utf32))
147-
blackHole(String(bytes: nonAsciiLargeStrDataUTF32BE, encoding: .utf32))
153+
blackHole(String(bytes: asciiLargeStrDataUTF32BE, encoding: Encoding.utf32))
154+
blackHole(String(bytes: nonAsciiLargeStrDataUTF32BE, encoding: Encoding.utf32))
148155
}
149156
}
150157
}

‎Benchmarks/Package.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ let package = Package(
1010
.package(url: "https://github.com/ordo-one/package-benchmark.git", from: "1.11.1"),
1111
],
1212
targets: [
13+
.target(
14+
name: "FoundationBenchmarkSupport",
15+
dependencies: [
16+
.product(name: "FoundationEssentials", package: "swift-foundation-local"),
17+
]
18+
),
19+
1320
.executableTarget(
1421
name: "PredicateBenchmarks",
1522
dependencies: [
@@ -49,6 +56,7 @@ let package = Package(
4956
dependencies: [
5057
.product(name: "FoundationEssentials", package: "swift-foundation-local"),
5158
.product(name: "Benchmark", package: "package-benchmark"),
59+
"FoundationBenchmarkSupport",
5260
],
5361
path: "Benchmarks/DataIO",
5462
plugins: [
@@ -72,6 +80,7 @@ let package = Package(
7280
dependencies: [
7381
.product(name: "FoundationEssentials", package: "swift-foundation-local"),
7482
.product(name: "Benchmark", package: "package-benchmark"),
83+
"FoundationBenchmarkSupport",
7584
],
7685
path: "Benchmarks/String",
7786
plugins: [
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2024 Apple Inc. and the Swift project authors
6+
// Licensed under Apache License v2.0 with Runtime Library Exception
7+
//
8+
// See https://swift.org/LICENSE.txt for license information
9+
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
import FoundationEssentials
14+
15+
package func autoreleasepool<T>(_ block: () -> T) -> T { block() }
16+
17+
package typealias FoundationEssentialsStringEncoding = String.Encoding

0 commit comments

Comments
 (0)
Please sign in to comment.