Skip to content

Commit 0fa784f

Browse files
committed
[benchmark] DataReplaceBuffer refactored
Refactored to use shared test method and inlined runFunctions. Re-enabled `Large` test errorneously disabled in #20411. Removed `skip` tags, as this was the last use.
1 parent 5c503c8 commit 0fa784f

File tree

1 file changed

+23
-41
lines changed

1 file changed

+23
-41
lines changed

benchmark/single-source/DataBenchmarks.swift

Lines changed: 23 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import TestsUtils
1414
import Foundation
1515

1616
let d: [BenchmarkCategory] = [.validation, .api, .Data]
17-
let skip: [BenchmarkCategory] = [.validation, .api, .Data, .skip]
1817

1918
public let DataBenchmarks = [
2019
BenchmarkInfo(name: "DataCreateEmpty",
@@ -87,12 +86,15 @@ public let DataBenchmarks = [
8786
BenchmarkInfo(name: "DataReplaceLarge", runFunction: {
8887
replace($0, data: medium, subrange:431..<809, with: large) }, tags: d),
8988

90-
BenchmarkInfo(name: "DataReplaceSmallBuffer",
91-
runFunction: run_ReplaceSmallBuffer, tags: d),
92-
BenchmarkInfo(name: "DataReplaceMediumBuffer",
93-
runFunction: run_ReplaceMediumBuffer, tags: d),
94-
BenchmarkInfo(name: "DataReplaceLargeBuffer",
95-
runFunction: run_ReplaceLargeBuffer, tags: skip),
89+
BenchmarkInfo(name: "DataReplaceSmallBuffer", runFunction: {
90+
replaceBuffer($0, data: medium, subrange:431..<809, with: small) },
91+
tags: d),
92+
BenchmarkInfo(name: "DataReplaceMediumBuffer", runFunction: {
93+
replaceBuffer($0, data: medium, subrange:431..<809, with: medium) },
94+
tags: d),
95+
BenchmarkInfo(name: "DataReplaceLargeBuffer", runFunction: {
96+
replaceBuffer($0, data: medium, subrange:431..<809, with: large) },
97+
tags: d),
9698

9799
BenchmarkInfo(name: "DataAppendSequence",
98100
runFunction: { append($0, sequenceLength: 809, to: medium) }, tags: d),
@@ -262,10 +264,20 @@ func replace(
262264
}
263265
}
264266

265-
func benchmark_ReplaceBuffer(_ N: Int, _ range: Range<Data.Index>, _ data_: Data, _ replacement: UnsafeBufferPointer<UInt8>) {
266-
for _ in 0..<10000*N {
267-
var data = data_
268-
data.replaceSubrange(range, with: replacement)
267+
@inline(never)
268+
func replaceBuffer(
269+
_ N: Int,
270+
data: Data,
271+
subrange range: Range<Data.Index>,
272+
with replacement: Data
273+
) {
274+
replacement.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) in
275+
let buffer = UnsafeBufferPointer(start: bytes, count: replacement.count)
276+
277+
for _ in 0..<10000*N {
278+
var copy = data
279+
copy.replaceSubrange(range, with: buffer)
280+
}
269281
}
270282
}
271283

@@ -296,36 +308,6 @@ public func setCount(_ N: Int, data: Data, extra: Int) {
296308
}
297309
}
298310

299-
@inline(never)
300-
public func run_ReplaceSmallBuffer(_ N: Int) {
301-
let data = sampleData(.medium)
302-
let replacement = sampleData(.small)
303-
let sz = replacement.count
304-
replacement.withUnsafeBytes { (ptr: UnsafePointer<UInt8>) in
305-
benchmark_ReplaceBuffer(N, 431..<809, data, UnsafeBufferPointer(start: ptr, count: sz))
306-
}
307-
}
308-
309-
@inline(never)
310-
public func run_ReplaceMediumBuffer(_ N: Int) {
311-
let data = sampleData(.medium)
312-
let replacement = sampleData(.medium)
313-
let sz = replacement.count
314-
replacement.withUnsafeBytes { (ptr: UnsafePointer<UInt8>) in
315-
benchmark_ReplaceBuffer(N, 431..<809, data, UnsafeBufferPointer(start: ptr, count: sz))
316-
}
317-
}
318-
319-
@inline(never)
320-
public func run_ReplaceLargeBuffer(_ N: Int) {
321-
let data = sampleData(.medium)
322-
let replacement = sampleData(.large)
323-
let sz = replacement.count
324-
replacement.withUnsafeBytes { (ptr: UnsafePointer<UInt8>) in
325-
benchmark_ReplaceBuffer(N, 431..<809, data, UnsafeBufferPointer(start: ptr, count: sz))
326-
}
327-
}
328-
329311
@inline(never)
330312
public func run_DataToStringEmpty(_ N: Int) {
331313
let d = Data()

0 commit comments

Comments
 (0)