Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Measuring the performance of reduce compared to joined and map+joined.
- Spoiler: map+joined way more faster!!!
- Try this code in a .playground file if you want.
- */
- func measure(closure: (()->Void)) {
- let start = Date()
- closure()
- let interval = Date().timeIntervalSince(start)
- print(interval)
- }
- // joined vs. reduce
- let nested: [[UInt8]] = Array(repeating: Array(repeating: 200, count: 100), count: 100)
- // 0.00224500894546509 sec
- measure {
- _ = nested.joined()
- }
- // 1.02885299921036 sec
- measure {
- _ = nested.reduce([]) { $0 + $1 }
- }
- // map + joined vs. reduce
- let values: [UInt8] = Array(repeating: 200, count: 10000)
- // 0.34653902053833 sec
- measure {
- _ = values.map{"\($0)"}.joined()
- }
- // 16.6465470194817 sec
- measure {
- _ = values.reduce("") {
- return "\($0)\($1)"
- }
- }
- // map + joined with separator vs. reduce
- // 0.499653995037079 sec
- measure {
- _ = values.map{"\($0)"}.joined(separator: ".")
- }
- // 22.2956600189209 sec
- measure {
- _ = values.reduce("") {
- return $0 + ($0.isEmpty ? "" : ".") + "\($1)"
- }
- }
- // Results: map+joined burnt reduce
- // 0.00224500894546509 vs 1.02885299921036
- // 0.34653902053833 vs 16.6465470194817
- // 0.499653995037079 vs 22.2956600189209
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement