Avatar
norio_nomura 3/18/2018 5:42 AM
累乗関数が欲しくて、パフォーマンスをチェックしてた。 import XCTest @testable import pow let lhs = 10 let rhs = 10 let count = 1000000 let expect = Int(pow(Double(lhs), Double(rhs))) final class powTests: XCTestCase { func test0() { var x: Int = 0 measure { for _ in 0..<count { x = power0(lhs, rhs) } } XCTAssertEqual(x, expect) } …
5:45 AM
ここでexpectの算出に使ってるInt(pow(Double(lhs), Double(rhs)))の速度も測ろうと考え func test_() { var x: Int = 0 measure { for _ in 0..<count { x = Int(pow(Double(lhs), Double(rhs))) } } XCTAssertEqual(x, expect) } を追加したら、10000倍くらい速かった。
5:46 AM
しかしこれはコンパイラが賢くて、x = expectに書き換えてただけだった…コンパイル時に定数になってた。 (edited)