Skip to content

Commit d08ab42

Browse files
authored
BridgeJS: Array benchmarks (#549)
1 parent d2ca6eb commit d08ab42

File tree

4 files changed

+1989
-0
lines changed

4 files changed

+1989
-0
lines changed

Benchmarks/Sources/Benchmarks.swift

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,134 @@ enum ComplexResult {
257257
}
258258
}
259259

260+
// MARK: - Array Performance Tests
261+
262+
@JS struct Point {
263+
var x: Double
264+
var y: Double
265+
}
266+
267+
@JS class ArrayRoundtrip {
268+
@JS init() {}
269+
270+
// MARK: Primitive Arrays - Int
271+
272+
@JS func takeIntArray(_ values: [Int]) {}
273+
@JS func makeIntArray() -> [Int] {
274+
return Array(1...1000)
275+
}
276+
@JS func roundtripIntArray(_ values: [Int]) -> [Int] {
277+
return values
278+
}
279+
280+
@JS func makeIntArrayLarge() -> [Int] {
281+
return Array(1...10000)
282+
}
283+
284+
// MARK: Primitive Arrays - Double
285+
286+
@JS func takeDoubleArray(_ values: [Double]) {}
287+
@JS func makeDoubleArray() -> [Double] {
288+
return (1...1000).map { Double($0) * 1.1 }
289+
}
290+
@JS func roundtripDoubleArray(_ values: [Double]) -> [Double] {
291+
return values
292+
}
293+
294+
// MARK: Primitive Arrays - String
295+
296+
@JS func takeStringArray(_ values: [String]) {}
297+
@JS func makeStringArray() -> [String] {
298+
return ["one", "two", "three", "four", "five"]
299+
}
300+
@JS func roundtripStringArray(_ values: [String]) -> [String] {
301+
return values
302+
}
303+
304+
// MARK: Struct Arrays
305+
306+
@JS func takePointArray(_ points: [Point]) {}
307+
@JS func makePointArray() -> [Point] {
308+
return [
309+
Point(x: 0.0, y: 0.0),
310+
Point(x: 1.0, y: 1.0),
311+
Point(x: 2.0, y: 2.0),
312+
Point(x: 3.0, y: 3.0),
313+
Point(x: 4.0, y: 4.0),
314+
]
315+
}
316+
@JS func roundtripPointArray(_ points: [Point]) -> [Point] {
317+
return points
318+
}
319+
320+
@JS func makePointArrayLarge() -> [Point] {
321+
return (0..<50).map { Point(x: Double($0), y: Double($0)) }
322+
}
323+
324+
// MARK: Nested Arrays
325+
326+
@JS func takeNestedIntArray(_ values: [[Int]]) {}
327+
@JS func makeNestedIntArray() -> [[Int]] {
328+
return [
329+
[1, 2, 3],
330+
[4, 5, 6],
331+
[7, 8, 9],
332+
]
333+
}
334+
@JS func roundtripNestedIntArray(_ values: [[Int]]) -> [[Int]] {
335+
return values
336+
}
337+
338+
@JS func takeNestedPointArray(_ points: [[Point]]) {}
339+
@JS func makeNestedPointArray() -> [[Point]] {
340+
return [
341+
[Point(x: 0.0, y: 0.0), Point(x: 1.0, y: 1.0)],
342+
[Point(x: 2.0, y: 2.0), Point(x: 3.0, y: 3.0)],
343+
[Point(x: 4.0, y: 4.0), Point(x: 5.0, y: 5.0)],
344+
]
345+
}
346+
@JS func roundtripNestedPointArray(_ points: [[Point]]) -> [[Point]] {
347+
return points
348+
}
349+
350+
// MARK: Optional Element Arrays
351+
352+
@JS func takeOptionalIntArray(_ values: [Int?]) {}
353+
@JS func makeOptionalIntArray() -> [Int?] {
354+
return [1, nil, 3, nil, 5, nil, 7, nil, 9, nil]
355+
}
356+
@JS func roundtripOptionalIntArray(_ values: [Int?]) -> [Int?] {
357+
return values
358+
}
359+
360+
@JS func takeOptionalPointArray(_ points: [Point?]) {}
361+
@JS func makeOptionalPointArray() -> [Point?] {
362+
return [
363+
Point(x: 0.0, y: 0.0),
364+
nil,
365+
Point(x: 2.0, y: 2.0),
366+
nil,
367+
Point(x: 4.0, y: 4.0),
368+
]
369+
}
370+
@JS func roundtripOptionalPointArray(_ points: [Point?]) -> [Point?] {
371+
return points
372+
}
373+
374+
// MARK: Optional Arrays
375+
376+
@JS func takeOptionalArray(_ values: [Int]?) {}
377+
@JS func makeOptionalArraySome() -> [Int]? {
378+
return [1, 2, 3, 4, 5]
379+
}
380+
@JS func makeOptionalArrayNone() -> [Int]? {
381+
return nil
382+
}
383+
@JS func roundtripOptionalArray(_ values: [Int]?) -> [Int]? {
384+
return values
385+
}
386+
}
387+
260388
@JS func run() {
261389

262390
let call = Benchmark("Call")

0 commit comments

Comments
 (0)