@@ -29,6 +29,12 @@ public let benchmarks: [BenchmarkInfo] = [
2929
3030 CopyUTF16CodeUnits ( workload: asciiWorkload, count: 500 ) . info,
3131 CopyUTF16CodeUnits ( workload: mixedWorkload, count: 500 ) . info,
32+ CopyUTF16CodeUnits ( workload: longMixedWorkload, count: 50 ) . info,
33+
34+ CopyAllUTF16CodeUnits ( workload: asciiWorkload, count: 1_000 ) . info,
35+ CopyAllUTF16CodeUnits ( workload: mixedWorkload, count: 100 ) . info,
36+ CopyAllUTF16CodeUnits ( workload: longASCIIWorkload, count: 7 ) . info,
37+ CopyAllUTF16CodeUnits ( workload: longMixedWorkload, count: 1 ) . info,
3238
3339 MutatedUTF16ToIdx ( workload: asciiWorkload, count: 50 ) . info,
3440 MutatedUTF16ToIdx ( workload: mixedWorkload, count: 50 ) . info,
@@ -364,6 +370,11 @@ class CopyUTF16CodeUnits: BenchmarkBase {
364370 self . count = count
365371 super. init ( name: " Breadcrumbs.CopyUTF16CodeUnits " , workload: workload)
366372 }
373+
374+ init ( name: String , workload: Workload , count: Int ) {
375+ self . count = count
376+ super. init ( name: name, workload: workload)
377+ }
367378
368379 override func setUp( ) {
369380 super. setUp ( )
@@ -393,6 +404,21 @@ class CopyUTF16CodeUnits: BenchmarkBase {
393404 }
394405}
395406
407+ class CopyAllUTF16CodeUnits : CopyUTF16CodeUnits {
408+ override init ( workload: Workload , count: Int ) {
409+ super. init (
410+ name: " Breadcrumbs.CopyAllUTF16CodeUnits " ,
411+ workload: workload,
412+ count: count
413+ )
414+ }
415+
416+ override func setUp( ) {
417+ super. setUp ( )
418+ inputIndices = Array ( repeating: 0 ..< inputString. utf16. count, count: count)
419+ }
420+ }
421+
396422/// This is like `UTF16ToIdx` but appends to the string after every index
397423/// conversion. In effect, this tests breadcrumb creation performance.
398424class MutatedUTF16ToIdx : BenchmarkBase {
0 commit comments