Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XCTest
- import ReactiveSwift
- import Result
- class PerformanceTests: XCTestCase {
- let iterations = 50_000
- func testCombineSignalTenary() {
- let (s1, o1) = Signal<Int, NoError>.pipe()
- let (s2, o2) = Signal<Int, NoError>.pipe()
- let (s3, o3) = Signal<Int, NoError>.pipe()
- let combined = Signal.combineLatest(s1, s2, s3)
- o1.send(value: 0)
- o2.send(value: 1)
- o3.send(value: 2)
- combined.observeValues { _ in }
- measure {
- for i in 0 ..< self.iterations {
- o1.send(value: i)
- o2.send(value: i + 1)
- o3.send(value: i + 2)
- }
- }
- }
- func testCombineProducerTernary() {
- let (s1, o1) = Signal<Int, NoError>.pipe()
- let (s2, o2) = Signal<Int, NoError>.pipe()
- let (s3, o3) = Signal<Int, NoError>.pipe()
- let combined = SignalProducer.combineLatest(SignalProducer(s1), SignalProducer(s2), SignalProducer(s3))
- o1.send(value: 0)
- o2.send(value: 1)
- o3.send(value: 2)
- combined.startWithValues { _ in }
- measure {
- for i in 0 ..< self.iterations {
- o1.send(value: i)
- o2.send(value: i + 1)
- o3.send(value: i + 2)
- }
- }
- }
- func testCombineSignal6ary() {
- let (s1, o1) = Signal<Int, NoError>.pipe()
- let (s2, o2) = Signal<Int, NoError>.pipe()
- let (s3, o3) = Signal<Int, NoError>.pipe()
- let (s4, o4) = Signal<Int, NoError>.pipe()
- let (s5, o5) = Signal<Int, NoError>.pipe()
- let (s6, o6) = Signal<Int, NoError>.pipe()
- let combined = Signal.combineLatest(s1, s2, s3, s4, s5, s6)
- o1.send(value: 0)
- o2.send(value: 1)
- o3.send(value: 2)
- o1.send(value: 3)
- o2.send(value: 4)
- o3.send(value: 5)
- combined.observeValues { _ in }
- measure {
- for i in 0 ..< self.iterations {
- o1.send(value: i)
- o2.send(value: i + 1)
- o3.send(value: i + 2)
- o4.send(value: i + 3)
- o5.send(value: i + 4)
- o6.send(value: i + 5)
- }
- }
- }
- func testCombineProducer6ary() {
- let (s1, o1) = Signal<Int, NoError>.pipe()
- let (s2, o2) = Signal<Int, NoError>.pipe()
- let (s3, o3) = Signal<Int, NoError>.pipe()
- let (s4, o4) = Signal<Int, NoError>.pipe()
- let (s5, o5) = Signal<Int, NoError>.pipe()
- let (s6, o6) = Signal<Int, NoError>.pipe()
- let combined = SignalProducer.combineLatest(SignalProducer(s1), SignalProducer(s2), SignalProducer(s3),
- SignalProducer(s4), SignalProducer(s5), SignalProducer(s6))
- o1.send(value: 0)
- o2.send(value: 1)
- o3.send(value: 2)
- o4.send(value: 3)
- o5.send(value: 4)
- o6.send(value: 5)
- combined.startWithValues { _ in }
- measure {
- for i in 0 ..< self.iterations {
- o1.send(value: i)
- o2.send(value: i + 1)
- o3.send(value: i + 2)
- o4.send(value: i + 3)
- o5.send(value: i + 4)
- o6.send(value: i + 5)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement