Skip to content

Commit f0cdadf

Browse files
authored
Merge pull request #21413 from palimondo/a-tall-white-fountain-played
[benchmark] Janitor Duty, Legacy Factor: Return of the String
2 parents e575ae9 + 381dbda commit f0cdadf

13 files changed

+348
-201
lines changed

benchmark/single-source/DataBenchmarks.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ public let DataBenchmarks = [
6060
BenchmarkInfo(name: "DataAppendDataLargeToSmall", runFunction: run_AppendDataLargeToSmall, tags: [.validation, .api, .Data]),
6161
BenchmarkInfo(name: "DataAppendDataLargeToMedium", runFunction: run_AppendDataLargeToMedium, tags: [.validation, .api, .Data]),
6262
BenchmarkInfo(name: "DataAppendDataLargeToLarge", runFunction: run_AppendDataLargeToLarge, tags: [.validation, .api, .Data, .skip]),
63-
BenchmarkInfo(name: "DataToStringEmpty", runFunction: run_DataToStringEmpty, tags: [.validation, .api, .Data]),
64-
BenchmarkInfo(name: "DataToStringSmall", runFunction: run_DataToStringSmall, tags: [.validation, .api, .Data]),
65-
BenchmarkInfo(name: "DataToStringMedium", runFunction: run_DataToStringMedium, tags: [.validation, .api, .Data]),
66-
BenchmarkInfo(name: "StringToDataEmpty", runFunction: run_StringToDataEmpty, tags: [.validation, .api, .Data]),
67-
BenchmarkInfo(name: "StringToDataSmall", runFunction: run_StringToDataSmall, tags: [.validation, .api, .Data]),
68-
BenchmarkInfo(name: "StringToDataMedium", runFunction: run_StringToDataMedium, tags: [.validation, .api, .Data]),
63+
BenchmarkInfo(name: "DataToStringEmpty", runFunction: run_DataToStringEmpty, tags: [.validation, .api, .Data], legacyFactor: 50),
64+
BenchmarkInfo(name: "DataToStringSmall", runFunction: run_DataToStringSmall, tags: [.validation, .api, .Data], legacyFactor: 50),
65+
BenchmarkInfo(name: "DataToStringMedium", runFunction: run_DataToStringMedium, tags: [.validation, .api, .Data], legacyFactor: 50),
66+
BenchmarkInfo(name: "StringToDataEmpty", runFunction: run_StringToDataEmpty, tags: [.validation, .api, .Data], legacyFactor: 50),
67+
BenchmarkInfo(name: "StringToDataSmall", runFunction: run_StringToDataSmall, tags: [.validation, .api, .Data], legacyFactor: 50),
68+
BenchmarkInfo(name: "StringToDataMedium", runFunction: run_StringToDataMedium, tags: [.validation, .api, .Data], legacyFactor: 50),
6969
]
7070

7171
enum SampleKind {
@@ -165,7 +165,7 @@ func sampleData(_ type: SampleKind) -> Data {
165165
case .string: return sampleString()
166166
case .immutableBacking: return sampleBridgedNSData()
167167
}
168-
168+
169169
}
170170

171171
func benchmark_AccessBytes(_ N: Int, _ data: Data) {
@@ -598,7 +598,7 @@ public func run_createMediumArray(_ N: Int) {
598598
@inline(never)
599599
public func run_DataToStringEmpty(_ N: Int) {
600600
let d = Data()
601-
for _ in 0..<10000 * N {
601+
for _ in 0..<200 * N {
602602
let s = String(decoding: d, as: UTF8.self)
603603
blackHole(s)
604604
}
@@ -607,7 +607,7 @@ public func run_DataToStringEmpty(_ N: Int) {
607607
@inline(never)
608608
public func run_DataToStringSmall(_ N: Int) {
609609
let d = Data([0x0D, 0x0A])
610-
for _ in 0..<10000 * N {
610+
for _ in 0..<200 * N {
611611
let s = String(decoding: d, as: UTF8.self)
612612
blackHole(s)
613613
}
@@ -616,7 +616,7 @@ public func run_DataToStringSmall(_ N: Int) {
616616
@inline(never)
617617
public func run_DataToStringMedium(_ N: Int) {
618618
let d = Data([0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A])
619-
for _ in 0..<10000 * N {
619+
for _ in 0..<200 * N {
620620
let s = String(decoding: d, as: UTF8.self)
621621
blackHole(s)
622622
}
@@ -625,7 +625,7 @@ public func run_DataToStringMedium(_ N: Int) {
625625
@inline(never)
626626
public func run_StringToDataEmpty(_ N: Int) {
627627
let s = ""
628-
for _ in 0..<10000 * N {
628+
for _ in 0..<200 * N {
629629
let d = Data(s.utf8)
630630
blackHole(d)
631631
}
@@ -634,7 +634,7 @@ public func run_StringToDataEmpty(_ N: Int) {
634634
@inline(never)
635635
public func run_StringToDataSmall(_ N: Int) {
636636
let s = "\r\n"
637-
for _ in 0..<10000 * N {
637+
for _ in 0..<200 * N {
638638
let d = Data(s.utf8)
639639
blackHole(d)
640640
}
@@ -643,7 +643,7 @@ public func run_StringToDataSmall(_ N: Int) {
643643
@inline(never)
644644
public func run_StringToDataMedium(_ N: Int) {
645645
let s = "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"
646-
for _ in 0..<10000 * N {
646+
for _ in 0..<200 * N {
647647
let d = Data(s.utf8)
648648
blackHole(d)
649649
}

benchmark/single-source/StrComplexWalk.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ import TestsUtils
1515
public let StrComplexWalk = BenchmarkInfo(
1616
name: "StrComplexWalk",
1717
runFunction: run_StrComplexWalk,
18-
tags: [.validation, .api, .String])
18+
tags: [.validation, .api, .String],
19+
legacyFactor: 10)
1920

2021
@inline(never)
2122
public func run_StrComplexWalk(_ N: Int) {
2223
var s = "निरन्तरान्धकारिता-दिगन्तर-कन्दलदमन्द-सुधारस-बिन्दु-सान्द्रतर-घनाघन-वृन्द-सन्देहकर-स्यन्दमान-मकरन्द-बिन्दु-बन्धुरतर-माकन्द-तरु-कुल-तल्प-कल्प-मृदुल-सिकता-जाल-जटिल-मूल-तल-मरुवक-मिलदलघु-लघु-लय-कलित-रमणीय-पानीय-शालिका-बालिका-करार-विन्द-गलन्तिका-गलदेला-लवङ्ग-पाटल-घनसार-कस्तूरिकातिसौरभ-मेदुर-लघुतर-मधुर-शीतलतर-सलिलधारा-निराकरिष्णु-तदीय-विमल-विलोचन-मयूख-रेखापसारित-पिपासायास-पथिक-लोकान्"
2324
let ref_result = 379
24-
for _ in 1...2000*N {
25+
for _ in 1...200*N {
2526
var count = 0
2627
for _ in s.unicodeScalars {
2728
count += 1
2829
}
2930
CheckResults(count == ref_result)
3031
}
3132
}
32-

benchmark/single-source/StrToInt.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import TestsUtils
1717
public let StrToInt = BenchmarkInfo(
1818
name: "StrToInt",
1919
runFunction: run_StrToInt,
20-
tags: [.validation, .api, .String])
20+
tags: [.validation, .api, .String],
21+
legacyFactor: 10)
2122

2223
@inline(never)
2324
public func run_StrToInt(_ N: Int) {
@@ -45,7 +46,7 @@ public func run_StrToInt(_ N: Int) {
4546
return r
4647
}
4748
var res = Int.max
48-
for _ in 1...1000*N {
49+
for _ in 1...100*N {
4950
res = res & DoOneIter(input)
5051
}
5152
CheckResults(res == ref_result)

benchmark/single-source/StringBuilder.swift

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,33 @@ public let StringBuilder = [
2828
BenchmarkInfo(
2929
name: "StringUTF16Builder",
3030
runFunction: run_StringUTF16Builder,
31-
tags: [.validation, .api, .String]),
31+
tags: [.validation, .api, .String],
32+
legacyFactor: 10),
3233
BenchmarkInfo(
3334
name: "StringUTF16SubstringBuilder",
3435
runFunction: run_StringUTF16SubstringBuilder,
35-
tags: [.validation, .api, .String]),
36+
tags: [.validation, .api, .String],
37+
legacyFactor: 10),
3638
BenchmarkInfo(
3739
name: "StringBuilderLong",
3840
runFunction: run_StringBuilderLong,
39-
tags: [.validation, .api, .String]),
41+
tags: [.validation, .api, .String],
42+
legacyFactor: 10),
4043
BenchmarkInfo(
4144
name: "StringBuilderWithLongSubstring",
4245
runFunction: run_StringBuilderWithLongSubstring,
43-
tags: [.validation, .api, .String]),
46+
tags: [.validation, .api, .String],
47+
legacyFactor: 10),
4448
BenchmarkInfo(
4549
name: "StringWordBuilder",
4650
runFunction: run_StringWordBuilder,
47-
tags: [.validation, .api, .String]),
51+
tags: [.validation, .api, .String],
52+
legacyFactor: 10),
4853
BenchmarkInfo(
4954
name: "StringWordBuilderReservingCapacity",
5055
runFunction: run_StringWordBuilderReservingCapacity,
51-
tags: [.validation, .api, .String]),
56+
tags: [.validation, .api, .String],
57+
legacyFactor: 10),
5258
]
5359

5460
@inline(never)
@@ -110,14 +116,14 @@ func buildStringFromSmallSubstrings(_ i: String) -> String {
110116

111117
@inline(never)
112118
public func run_StringUTF16Builder(_ N: Int) {
113-
for _ in 1...5000*N {
119+
for _ in 1...500*N {
114120
blackHole(buildStringUTF16("a"))
115121
}
116122
}
117123

118124
@inline(never)
119125
public func run_StringUTF16SubstringBuilder(_ N: Int) {
120-
for _ in 1...5000*N {
126+
for _ in 1...500*N {
121127
blackHole(buildStringFromSmallSubstrings("a"))
122128
}
123129
}
@@ -153,14 +159,14 @@ func buildStringWithLongSubstring(_ i: String) -> String {
153159

154160
@inline(never)
155161
public func run_StringBuilderLong(_ N: Int) {
156-
for _ in 1...5000*N {
162+
for _ in 1...500*N {
157163
blackHole(buildStringLong("👻"))
158164
}
159165
}
160166

161167
@inline(never)
162168
public func run_StringBuilderWithLongSubstring(_ N: Int) {
163-
for _ in 1...5000*N {
169+
for _ in 1...500*N {
164170
blackHole(buildStringWithLongSubstring("👻"))
165171
}
166172
}
@@ -184,13 +190,16 @@ func buildString(
184190

185191
@inline(never)
186192
public func run_StringWordBuilder(_ N: Int) {
187-
blackHole(buildString(
188-
word: "bumfuzzle", count: 50_000 * N, reservingCapacity: false))
193+
for _ in 1...N {
194+
blackHole(buildString(
195+
word: "bumfuzzle", count: 5_000, reservingCapacity: false))
196+
}
189197
}
190198

191199
@inline(never)
192200
public func run_StringWordBuilderReservingCapacity(_ N: Int) {
193-
blackHole(buildString(
194-
word: "bumfuzzle", count: 50_000 * N, reservingCapacity: true))
201+
for _ in 1...N {
202+
blackHole(buildString(
203+
word: "bumfuzzle", count: 5_000, reservingCapacity: true))
204+
}
195205
}
196-

0 commit comments

Comments
 (0)