Skip to content

Instantly share code, notes, and snippets.

@srdanrasic
Created November 3, 2016 19:42
Show Gist options
  • Select an option

  • Save srdanrasic/09327d29d9d4845293d56e27e2b1cef6 to your computer and use it in GitHub Desktop.

Select an option

Save srdanrasic/09327d29d9d4845293d56e27e2b1cef6 to your computer and use it in GitHub Desktop.
import XCTest
import ReactiveKit
import ReactiveSwift
import RxSwift
let iterations = 1000
let elements = 100
class BenchmarkTests: XCTestCase {
// Average result: 0.019 ms
func testReactiveKit() {
self.measure {
for _ in 0..<iterations {
let signal = ReactiveKit.Signal<Int, NoError> { observer in
for j in 0..<elements {
observer.next(j)
}
observer.completed()
return NonDisposable.instance
}
_ = signal.observe { _ in }
}
}
}
// Average result: 0.155 ms
func testReactiveSwift() {
self.measure {
for _ in 0..<iterations {
let signal = ReactiveSwift.SignalProducer<Int, NoError> { observer, _ in
for j in 0..<elements {
observer.send(value: j)
}
observer.sendCompleted()
}
_ = signal.start { _ in }
}
}
}
// Average result: 0.097 ms
func testReactiveSwift2() {
self.measure {
for _ in 0..<iterations {
let signal = ReactiveSwift.Signal<Int, NoError> { observer in
for j in 0..<elements {
observer.send(value: j)
}
observer.sendCompleted()
return nil
}
_ = signal.observe { _ in }
}
}
}
// Average result: 0.026 ms
func testRxSwift() {
self.measure {
for _ in 0..<iterations {
let signal = RxSwift.Observable<Int>.create { observer in
for j in 0..<elements {
observer.onNext(j)
}
observer.onCompleted()
return RxSwift.Disposables.create()
}
_ = signal.subscribe { _ in }
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment