Last active
March 12, 2020 08:34
-
-
Save tieleman/e716e3a669972190ff34b7d5029e10c0 to your computer and use it in GitHub Desktop.
Xcode playground code for benchmarking a Swifty implementation vs. vDSP.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Accelerate | |
import XCTest | |
let array = Array(stride(from: 0.0, to: 50000.0, by: 1)) | |
let array2 = Array(stride(from: 0.0, to: 50000.0, by: 1)) | |
let array3 = Array(stride(from: 0.0, to: 50000.0, by: 1)) | |
class MathTests: XCTestCase { | |
func testMeanSwifty() { | |
measure { | |
let _ = array.reduce(0.0, +) / Double(array.count) | |
} | |
} | |
func testMeanvDSP() { | |
measure { | |
let _ = vDSP.mean(array) | |
} | |
} | |
func testPowSwifty() { | |
measure { | |
let _ = array.map { pow($0, 2) } | |
} | |
} | |
func testPowvDSP() { | |
measure { | |
let _ = vDSP.multiply(array, array) | |
} | |
} | |
func testSumMultSwifty() { | |
measure { | |
let _ = array.enumerated().map { ($0.element + array2[$0.offset]) * array3[$0.offset] } | |
} | |
} | |
func testSumMultvDSP() { | |
measure { | |
let _ = vDSP.multiply(addition: (array, array2), array3) | |
} | |
} | |
} | |
MathTests.defaultTestSuite.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment