From 2a07c1c8ce813cc2aa4ad1b8b03744d8f9c46f45 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Fri, 7 Oct 2022 11:35:39 -0700 Subject: [PATCH] [interop] benchmark: add run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop that doesn't use C++ inline helpers --- benchmark/cxx-source/CxxVectorSum.swift | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/benchmark/cxx-source/CxxVectorSum.swift b/benchmark/cxx-source/CxxVectorSum.swift index bcd6c71072e..df0c71153f1 100644 --- a/benchmark/cxx-source/CxxVectorSum.swift +++ b/benchmark/cxx-source/CxxVectorSum.swift @@ -30,6 +30,10 @@ public let benchmarks = [ name: "CxxVectorOfU32.Sum.Swift.RawIteratorLoop", runFunction: run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop, tags: [.validation, .bridging, .cxxInterop]), + BenchmarkInfo( + name: "CxxVectorOfU32.Sum.Swift.RawIteratorLoop.WithCxxInlineHelpers", + runFunction: run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop_WithCxxInlineHelpers, + tags: [.validation, .bridging, .cxxInterop]), BenchmarkInfo( name: "CxxVectorOfU32.Sum.Swift.IndexAndSubscriptLoop", runFunction: run_CxxVectorOfU32_Sum_Swift_IndexAndSubscriptLoop, @@ -68,7 +72,7 @@ public func run_CxxVectorOfU32_Sum_Swift_ForInLoop(_ n: Int) { // This function should have comparable performance to // `run_CxxVectorOfU32_Sum_Cxx_RangedForLoop`. @inline(never) -public func run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop(_ n: Int) { +public func run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop_WithCxxInlineHelpers(_ n: Int) { let vectorOfU32 = makeVector32(vectorSize) var sum: UInt32 = 0 for _ in 0..<(n * iterRepeatFactor) { @@ -82,6 +86,23 @@ public func run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop(_ n: Int) { blackHole(sum) } +// This function should have comparable performance to +// `run_CxxVectorOfU32_Sum_Cxx_RangedForLoop`. +@inline(never) +public func run_CxxVectorOfU32_Sum_Swift_RawIteratorLoop(_ n: Int) { + let vectorOfU32 = makeVector32(vectorSize) + var sum: UInt32 = 0 + for _ in 0..<(n * iterRepeatFactor) { + var b = vectorOfU32.__beginUnsafe() + let e = vectorOfU32.__endUnsafe() + while b != e { + sum = sum &+ b.pointee + b = b.successor() + } + } + blackHole(sum) +} + @inline(never) public func run_CxxVectorOfU32_Sum_Swift_IndexAndSubscriptLoop(_ n: Int) { let vectorOfU32 = makeVector32(vectorSize)