Skip to content

Commit 987f90d

Browse files
committed
---
yaml --- r: 341988 b: refs/heads/rxwei-patch-1 c: dcb495d h: refs/heads/master
1 parent 7328e49 commit 987f90d

File tree

3 files changed

+79
-36
lines changed

3 files changed

+79
-36
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-08-18-a: b10b1fce14385faa6d44f6b933e95
10151015
refs/heads/rdar-43033749-fix-batch-mode-no-diags-swift-5.0-branch: a14e64eaad30de89f0f5f0b2a782eed7ecdcb255
10161016
refs/heads/revert-19006-error-bridging-integer-type: 8a9065a3696535305ea53fe9b71f91cbe6702019
10171017
refs/heads/revert-19050-revert-19006-error-bridging-integer-type: ecf752d54b05dd0a20f510f0bfa54a3fec3bcaca
1018-
refs/heads/rxwei-patch-1: 505f9bacbd266aa9e81ff32f03dd18c67d07fb46
1018+
refs/heads/rxwei-patch-1: dcb495d0db0d5fdacbd22ce417728954473bace7
10191019
refs/heads/shahmishal-patch-1: e58ec0f7488258d42bef51bc3e6d7b3dc74d7b2a
10201020
refs/heads/typelist-existential: 4046359efd541fb5c72d69a92eefc0a784df8f5e
10211021
refs/tags/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-08-20-a: 4319ba09e4fb8650ee86061075c74a016b6baab9

branches/rxwei-patch-1/benchmark/Package.swift

Lines changed: 62 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:4.2
1+
// swift-tools-version:5.0
22

33
import PackageDescription
44
import Foundation
@@ -9,10 +9,15 @@ unsupportedTests.insert("ObjectiveCBridging")
99
unsupportedTests.insert("ObjectiveCBridgingStubs")
1010
#endif
1111

12-
// This is a stop gap hack so we can edit benchmarks in Xcode.
13-
let singleSourceLibraries: [String] = {
12+
//===---
13+
// Single Source Libraries
14+
//
15+
16+
/// Return the source files in subDirectory that we will translate into
17+
/// libraries. Each source library will be compiled as its own module.
18+
func getSingleSourceLibraries(subDirectory: String) -> [String] {
1419
let f = FileManager.`default`
15-
let dirURL = URL(fileURLWithPath: "single-source").absoluteURL
20+
let dirURL = URL(fileURLWithPath: subDirectory)
1621
let fileURLs = try! f.contentsOfDirectory(at: dirURL,
1722
includingPropertiesForKeys: nil)
1823
return fileURLs.compactMap { (path: URL) -> String? in
@@ -25,27 +30,45 @@ let singleSourceLibraries: [String] = {
2530
return nil
2631
}
2732

28-
let s = String(c[0])
33+
let name = String(c[0])
2934

3035
// We do not support this test.
31-
if unsupportedTests.contains(s) {
36+
if unsupportedTests.contains(name) {
3237
return nil
3338
}
3439

35-
assert(s != "PrimsSplit")
36-
return s
40+
return name
3741
}
38-
}()
42+
}
43+
44+
var singleSourceLibraryDirs: [String] = []
45+
singleSourceLibraryDirs.append("single-source")
46+
47+
var singleSourceLibraries: [String] = singleSourceLibraryDirs.flatMap {
48+
getSingleSourceLibraries(subDirectory: $0)
49+
}
3950

40-
let multiSourceLibraries: [String] = {
51+
//===---
52+
// Multi Source Libraries
53+
//
54+
55+
func getMultiSourceLibraries(subDirectory: String) -> [(String, String)] {
4156
let f = FileManager.`default`
42-
let dirURL = URL(fileURLWithPath: "multi-source").absoluteURL
43-
let fileURLs = try! f.contentsOfDirectory(at: dirURL,
44-
includingPropertiesForKeys: nil)
45-
return fileURLs.map { (path: URL) -> String in
46-
return path.lastPathComponent
47-
}
48-
}()
57+
let dirURL = URL(string: subDirectory)!
58+
let subDirs = try! f.contentsOfDirectory(at: dirURL, includingPropertiesForKeys: nil)
59+
return subDirs.map { (subDirectory, $0.lastPathComponent) }
60+
}
61+
62+
var multiSourceLibraryDirs: [String] = []
63+
multiSourceLibraryDirs.append("multi-source")
64+
65+
var multiSourceLibraries: [(parentSubDir: String, name: String)] = multiSourceLibraryDirs.flatMap {
66+
getMultiSourceLibraries(subDirectory: $0)
67+
}
68+
69+
//===---
70+
// Products
71+
//
4972

5073
var products: [Product] = []
5174
products.append(.library(name: "TestsUtils", type: .static, targets: ["TestsUtils"]))
@@ -54,9 +77,15 @@ products.append(.library(name: "DriverUtils", type: .static, targets: ["DriverUt
5477
products.append(.library(name: "ObjectiveCTests", type: .static, targets: ["ObjectiveCTests"]))
5578
#endif
5679
products.append(.executable(name: "SwiftBench", targets: ["SwiftBench"]))
57-
products.append(.library(name: "PrimsSplit", type: .static, targets: ["PrimsSplit"]))
80+
5881
products += singleSourceLibraries.map { .library(name: $0, type: .static, targets: [$0]) }
59-
products += multiSourceLibraries.map { .library(name: $0, type: .static, targets: [$0]) }
82+
products += multiSourceLibraries.map {
83+
return .library(name: $0.name, type: .static, targets: [$0.name])
84+
}
85+
86+
//===---
87+
// Targets
88+
//
6089

6190
var targets: [Target] = []
6291
targets.append(.target(name: "TestsUtils", path: "utils", sources: ["TestsUtils.swift"]))
@@ -73,7 +102,7 @@ swiftBenchDeps.append(.target(name: "ObjectiveCTests"))
73102
#endif
74103
swiftBenchDeps.append(.target(name: "DriverUtils"))
75104
swiftBenchDeps += singleSourceLibraries.map { .target(name: $0) }
76-
swiftBenchDeps += multiSourceLibraries.map { .target(name: $0) }
105+
swiftBenchDeps += multiSourceLibraries.map { .target(name: $0.name) }
77106

78107
targets.append(
79108
.target(name: "SwiftBench",
@@ -92,20 +121,27 @@ var singleSourceDeps: [Target.Dependency] = [.target(name: "TestsUtils")]
92121
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
93122
singleSourceDeps.append(.target(name: "ObjectiveCTests"))
94123
#endif
95-
targets += singleSourceLibraries.map { x in
96-
return .target(name: x,
124+
125+
targets += singleSourceLibraries.map { name in
126+
return .target(name: name,
97127
dependencies: singleSourceDeps,
98128
path: "single-source",
99-
sources: ["\(x).swift"])
129+
sources: ["\(name).swift"])
100130
}
101-
targets += multiSourceLibraries.map { x in
102-
return .target(name: x,
131+
132+
targets += multiSourceLibraries.map { lib in
133+
return .target(
134+
name: lib.name,
103135
dependencies: [
104136
.target(name: "TestsUtils")
105137
],
106-
path: "multi-source/\(x)")
138+
path: lib.parentSubDir)
107139
}
108140

141+
//===---
142+
// Top Level Definition
143+
//
144+
109145
let p = Package(
110146
name: "swiftbench",
111147
products: products,

branches/rxwei-patch-1/benchmark/README.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
# Swift Benchmark Suite
1+
Swift Benchmark Suite
2+
=====================
23

34
This directory contains the Swift Benchmark Suite.
45

5-
## Running Swift Benchmarks
6+
Running Swift Benchmarks
7+
------------------------
68

79
To run Swift benchmarks, pass the `--benchmark` flag to `build-script`. The
810
current benchmark results will be compared to the previous run's results if
@@ -14,7 +16,8 @@ impacting changes, and run the benchmarks again. Upon benchmark completion, the
1416
benchmark results for the development branch will be compared to the most
1517
recent benchmark results for `master`.
1618

17-
## Building with build-script
19+
Building with build-script
20+
--------------------------
1821

1922
By default, Swift benchmarks for OS X are compiled during the Swift build
2023
process. To build Swift benchmarks for additional platforms, pass the following
@@ -30,7 +33,8 @@ drivers dynamically link Swift standard library dylibs from a path
3033
relative to their run-time location (../lib/swift) so the standard
3134
library should be distributed alongside them.
3235

33-
## Building Independently
36+
Building Independently
37+
----------------------
3438

3539
To build the Swift benchmarks using only an Xcode installation: install an
3640
Xcode version with Swift support, install cmake 2.8.12, and ensure Xcode is
@@ -106,7 +110,8 @@ installed libraries instead, enable
106110
This will reflect the performance of the Swift standard library
107111
installed on the device, not the one included in the Swift root.
108112

109-
## Using the Benchmark Driver
113+
Using the Benchmark Driver
114+
--------------------------
110115

111116
### Usage
112117

@@ -149,15 +154,17 @@ You can use test numbers instead of test names like this:
149154
Test numbers are not stable in the long run, adding and removing tests from the
150155
benchmark suite will reorder them, but they are stable for a given build.
151156

152-
## Using the Harness Generator
157+
Using the Harness Generator
158+
---------------------------
153159

154160
`scripts/generate_harness/generate_harness.py` runs `gyb` to automate generation
155161
of some benchmarks.
156162

157163
** FIXME ** `gyb` should be invoked automatically during the
158164
build so that manually invoking `generate_harness.py` is not required.
159165

160-
## Adding New Benchmarks
166+
Adding New Benchmarks
167+
---------------------
161168

162169
The harness generator supports both single and multiple file tests.
163170

@@ -237,8 +244,8 @@ public func run_YourTestName(N: Int) {
237244
The current set of tags are defined by the `BenchmarkCategory` enum in
238245
`TestsUtils.swift` .
239246

240-
## Testing the Benchmark Drivers
241-
247+
Testing the Benchmark Drivers
248+
-----------------------------
242249
When working on tests, after the initial build
243250
````
244251
swift-source$ ./swift/utils/build-script -R -B

0 commit comments

Comments
 (0)