add performance test

to show bit cast init is faster
This commit is contained in:
Paul Zabelin
2019-03-12 03:16:43 -07:00
parent 9d3ec57c6c
commit bf00c9a461
6 changed files with 243 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
4BA7B1521C816DCE00933779 /* container.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4B2D2E881C7C2E620045FD11 /* container.jpg */; };
4BA7B1531C816DCE00933779 /* sky.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4B2D2E8C1C7C323D0045FD11 /* sky.jpg */; };
4BCA955F2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCA955E2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift */; };
4BCA95632237B9880091E312 /* PerformanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCA95622237B9880091E312 /* PerformanceTest.swift */; };
4BD09EAE2046B05A006D2FA4 /* OpenCV_Spec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD09EAD2046B05A006D2FA4 /* OpenCV_Spec.swift */; };
4BD09EB220478E5C006D2FA4 /* PerspectiveTransformSpecHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD09EB120478E5C006D2FA4 /* PerspectiveTransformSpecHelper.swift */; };
4BD09EB320478E5C006D2FA4 /* PerspectiveTransformSpecHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD09EB120478E5C006D2FA4 /* PerspectiveTransformSpecHelper.swift */; };
@@ -104,6 +105,7 @@
4BB87C3B21F468CA00DABAED /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
4BB87C3C21F468CA00DABAED /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = "<group>"; };
4BCA955E2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CATransform3D+MatrixSpec.swift"; sourceTree = "<group>"; };
4BCA95622237B9880091E312 /* PerformanceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerformanceTest.swift; sourceTree = "<group>"; };
4BD09EAD2046B05A006D2FA4 /* OpenCV_Spec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenCV_Spec.swift; sourceTree = "<group>"; };
4BD09EB120478E5C006D2FA4 /* PerspectiveTransformSpecHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerspectiveTransformSpecHelper.swift; sourceTree = "<group>"; };
4BDEE37220004185007214F1 /* PhotoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoViewController.swift; sourceTree = "<group>"; };
@@ -182,6 +184,7 @@
607FACEB1AFB9204008FA782 /* MatrixSpec.swift */,
4B58ECF61C79C3C200F1BC00 /* CATransform3Dfrom2DSpec.swift */,
4BCA955E2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift */,
4BCA95622237B9880091E312 /* PerformanceTest.swift */,
4B74DB2C203BAA1A0030F41B /* CALayerTransformSpec.swift */,
4BA3D17A1C771B2E0009B690 /* ProjectionSpec.swift */,
4B84138A201DD90D00D17FE2 /* PerspectiveSpec.swift */,
@@ -691,6 +694,7 @@
4BCA955F2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift in Sources */,
4B74DB41203BDA070030F41B /* PerspectiveSpec.swift in Sources */,
4B74DB3E203BDA070030F41B /* CATransform3Dfrom2DSpec.swift in Sources */,
4BCA95632237B9880091E312 /* PerformanceTest.swift in Sources */,
4B74DB45203BDA070030F41B /* VectorProjectionSpec.swift in Sources */,
4B74DB40203BDA070030F41B /* ProjectionSpec.swift in Sources */,
4B74DB3C203BDA070030F41B /* MatrixSpec.swift in Sources */,

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>classNames</key>
<dict>
<key>PerformanceTest</key>
<dict>
<key>testComparePerformance()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.0113</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
<key>testPerformance()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.00583</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
</dict>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>classNames</key>
<dict>
<key>PerformanceTest</key>
<dict>
<key>testInitUsingBitcast()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.0045609</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
<key>testInitUsingDesignatedInitializer()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.016586</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
</dict>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>classNames</key>
<dict>
<key>PerformanceTest</key>
<dict>
<key>testInitUsingBitcast()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.0029019</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
<key>testInitUsingDesignatedInitializer()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.01429</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
</dict>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>runDestinationsByUUID</key>
<dict>
<key>1BF313F0-F809-434C-A147-7A5A9A911F00</key>
<dict>
<key>localComputer</key>
<dict>
<key>busSpeedInMHz</key>
<integer>100</integer>
<key>cpuCount</key>
<integer>1</integer>
<key>cpuKind</key>
<string>Intel Core i7</string>
<key>cpuSpeedInMHz</key>
<integer>4000</integer>
<key>logicalCPUCoresPerPackage</key>
<integer>8</integer>
<key>modelCode</key>
<string>iMac15,1</string>
<key>physicalCPUCoresPerPackage</key>
<integer>4</integer>
<key>platformIdentifier</key>
<string>com.apple.platform.macosx</string>
</dict>
<key>targetArchitecture</key>
<string>x86_64</string>
<key>targetDevice</key>
<dict>
<key>modelCode</key>
<string>iPhone11,8</string>
<key>platformIdentifier</key>
<string>com.apple.platform.iphonesimulator</string>
</dict>
</dict>
<key>E9E0D678-741E-4B5A-BADA-15C171B67C91</key>
<dict>
<key>localComputer</key>
<dict>
<key>busSpeedInMHz</key>
<integer>100</integer>
<key>cpuCount</key>
<integer>1</integer>
<key>cpuKind</key>
<string>Intel Core i7</string>
<key>cpuSpeedInMHz</key>
<integer>4000</integer>
<key>logicalCPUCoresPerPackage</key>
<integer>8</integer>
<key>modelCode</key>
<string>iMac15,1</string>
<key>physicalCPUCoresPerPackage</key>
<integer>4</integer>
<key>platformIdentifier</key>
<string>com.apple.platform.macosx</string>
</dict>
<key>targetArchitecture</key>
<string>x86_64</string>
<key>targetDevice</key>
<dict>
<key>modelCode</key>
<string>iPad8,5</string>
<key>platformIdentifier</key>
<string>com.apple.platform.iphonesimulator</string>
</dict>
</dict>
<key>F73F58F2-54FD-4B61-BE11-7BFBBD73F8F3</key>
<dict>
<key>localComputer</key>
<dict>
<key>busSpeedInMHz</key>
<integer>100</integer>
<key>cpuCount</key>
<integer>1</integer>
<key>cpuKind</key>
<string>Intel Core i7</string>
<key>cpuSpeedInMHz</key>
<integer>4000</integer>
<key>logicalCPUCoresPerPackage</key>
<integer>8</integer>
<key>modelCode</key>
<string>iMac15,1</string>
<key>physicalCPUCoresPerPackage</key>
<integer>4</integer>
<key>platformIdentifier</key>
<string>com.apple.platform.macosx</string>
</dict>
<key>targetArchitecture</key>
<string>x86_64</string>
<key>targetDevice</key>
<dict>
<key>modelCode</key>
<string>iPad6,12</string>
<key>platformIdentifier</key>
<string>com.apple.platform.iphonesimulator</string>
</dict>
</dict>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,41 @@
//
// PerformanceTest.swift
// Framework Unit Specs
//
// Created by Paul Zabelin on 3/12/19.
// Copyright © 2019 CocoaPods. All rights reserved.
//
import XCTest
import simd
@testable import PerspectiveTransform
class PerformanceTest: XCTestCase {
let m4x4 = double4x4((1...4).map { row in
double4((1...4).map {Double(10 * row + $0)})
})
let iterations = 100000
/// Shows that bitcast is 2-4 times faster
func testInitUsingBitcast() {
measure {
for _ in (0...iterations) {
_ = CATransform3D(m4x4)
}
}
}
/// Shows that designated init is slower
func testInitUsingDesignatedInitializer() {
measure {
for _ in (0...iterations) {
_ = CATransform3D(
m11: CGFloat(m4x4[0, 0]), m12: CGFloat(m4x4[0, 1]), m13: CGFloat(m4x4[0, 2]), m14: CGFloat(m4x4[0, 3]),
m21: CGFloat(m4x4[1, 0]), m22: CGFloat(m4x4[1, 1]), m23: CGFloat(m4x4[1, 2]), m24: CGFloat(m4x4[1, 3]),
m31: CGFloat(m4x4[2, 0]), m32: CGFloat(m4x4[2, 1]), m33: CGFloat(m4x4[2, 2]), m34: CGFloat(m4x4[2, 3]),
m41: CGFloat(m4x4[3, 0]), m42: CGFloat(m4x4[3, 1]), m43: CGFloat(m4x4[3, 2]), m44: CGFloat(m4x4[3, 3])
)
}
}
}
}