Skip to content

Instantly share code, notes, and snippets.

@tieleman
Last active March 12, 2020 08:34
Show Gist options
  • Save tieleman/e716e3a669972190ff34b7d5029e10c0 to your computer and use it in GitHub Desktop.
Save tieleman/e716e3a669972190ff34b7d5029e10c0 to your computer and use it in GitHub Desktop.
Xcode playground code for benchmarking a Swifty implementation vs. vDSP.
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