iOS . MacOS , @Sulthan.
, reduce :
func benchmark(_ label: String, times: Int = 100000, _ f: () -> Void) {
let start = CACurrentMediaTime()
(0..<times).forEach { _ in f() }
let end = CACurrentMediaTime()
print("\(label) took \(end-start)")
}
let arrayStrings = ["H", "e", "l", "l", "o"]
benchmark("reduce", { _ = arrayStrings.reduce("", +) } )
benchmark("join", { _ = arrayStrings.joined() })
main iOS, :
reduce took 0.358474982960615
join took 0.582276367989834
, Release, :
reduce took 0.126910287013743
join took 0.0291724550188519
, reduce . , , , joined, , .