Skip to content

Instantly share code, notes, and snippets.

@andersio
Last active November 25, 2016 03:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andersio/5cc8fd27a8adccf70d53036505069db3 to your computer and use it in GitHub Desktop.
Save andersio/5cc8fd27a8adccf70d53036505069db3 to your computer and use it in GitHub Desktop.
import XCTest
import ReactiveSwift
import Result
class PerfTests: XCTestCase {
func testSignalSendEventOneObserver() {
let (signal, observer) = Signal<Int, NoError>.pipe()
signal.observe { _ in }
measure {
for i in 0 ..< 10000 {
observer.send(value: i)
}
}
}
func testSignalSendEventEightObservers() {
let (signal, observer) = Signal<Int, NoError>.pipe()
for _ in 0 ..< 8 {
signal.observe { _ in }
}
measure {
for i in 0 ..< 10000 {
observer.send(value: i)
}
}
}
func testNestedProducerSendEventTwoObservers() {
let (signal, observer) = Signal<Int, NoError>.pipe()
let producer = SignalProducer<Int, NoError>(signal: signal)
.map { $0 + 1 }
.map { $0 + 1 }
.on { _ in }
.map { $0 + 1 }
.map { $0 + 1 }
for _ in 0 ..< 2 {
producer.start()
}
measure {
for i in 0 ..< 10000 {
observer.send(value: i)
}
}
}
func testNestedProducerMixed() {
let (signal, observer) = Signal<Int, NoError>.pipe()
let producer = SignalProducer<Int, NoError>(signal: signal)
.map { $0 + 1 }
.map { $0 + 1 }
.on { _ in }
.map { $0 + 1 }
.map { $0 + 1 }
producer.start()
measure {
for i in 0 ..< 10000 {
let d = producer.start()
observer.send(value: i)
d.dispose()
}
}
}
func testNestedProducerSendEventOneObserver() {
let (signal, observer) = Signal<Int, NoError>.pipe()
let producer = SignalProducer<Int, NoError>(signal: signal)
.map { $0 + 1 }
.map { $0 + 1 }
.on { _ in }
.map { $0 + 1 }
.map { $0 + 1 }
producer.start()
measure {
for i in 0 ..< 10000 {
observer.send(value: i)
}
}
}
func testNestedProducerStarting() {
let producer = SignalProducer<Int, NoError>(value: 0)
.map { $0 + 1 }
.map { $0 + 1 }
.on { _ in }
.map { $0 + 1 }
.map { $0 + 1 }
measure {
for i in 0 ..< 10000 {
producer.start()
}
}
}
func testNestedProducerStartingDisposing() {
let producer = SignalProducer<Int, NoError>(value: 0)
.map { $0 + 1 }
.map { $0 + 1 }
.on { _ in }
.map { $0 + 1 }
.map { $0 + 1 }
measure {
for i in 0 ..< 10000 {
producer.start().dispose()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment