Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. import XCTest
  2. import ReactiveSwift
  3. import Result
  4.  
  5. class PerformanceTests: XCTestCase {
  6. let iterations = 50_000
  7.  
  8. func testCombineSignalTenary() {
  9. let (s1, o1) = Signal<Int, NoError>.pipe()
  10. let (s2, o2) = Signal<Int, NoError>.pipe()
  11. let (s3, o3) = Signal<Int, NoError>.pipe()
  12.  
  13. let combined = Signal.combineLatest(s1, s2, s3)
  14.  
  15. o1.send(value: 0)
  16. o2.send(value: 1)
  17. o3.send(value: 2)
  18.  
  19. combined.observeValues { _ in }
  20.  
  21. measure {
  22. for i in 0 ..< self.iterations {
  23. o1.send(value: i)
  24. o2.send(value: i + 1)
  25. o3.send(value: i + 2)
  26. }
  27. }
  28. }
  29.  
  30. func testCombineProducerTernary() {
  31. let (s1, o1) = Signal<Int, NoError>.pipe()
  32. let (s2, o2) = Signal<Int, NoError>.pipe()
  33. let (s3, o3) = Signal<Int, NoError>.pipe()
  34.  
  35. let combined = SignalProducer.combineLatest(SignalProducer(s1), SignalProducer(s2), SignalProducer(s3))
  36.  
  37. o1.send(value: 0)
  38. o2.send(value: 1)
  39. o3.send(value: 2)
  40.  
  41. combined.startWithValues { _ in }
  42.  
  43. measure {
  44. for i in 0 ..< self.iterations {
  45. o1.send(value: i)
  46. o2.send(value: i + 1)
  47. o3.send(value: i + 2)
  48. }
  49. }
  50. }
  51.  
  52. func testCombineSignal6ary() {
  53. let (s1, o1) = Signal<Int, NoError>.pipe()
  54. let (s2, o2) = Signal<Int, NoError>.pipe()
  55. let (s3, o3) = Signal<Int, NoError>.pipe()
  56. let (s4, o4) = Signal<Int, NoError>.pipe()
  57. let (s5, o5) = Signal<Int, NoError>.pipe()
  58. let (s6, o6) = Signal<Int, NoError>.pipe()
  59.  
  60. let combined = Signal.combineLatest(s1, s2, s3, s4, s5, s6)
  61.  
  62. o1.send(value: 0)
  63. o2.send(value: 1)
  64. o3.send(value: 2)
  65. o1.send(value: 3)
  66. o2.send(value: 4)
  67. o3.send(value: 5)
  68.  
  69. combined.observeValues { _ in }
  70.  
  71. measure {
  72. for i in 0 ..< self.iterations {
  73. o1.send(value: i)
  74. o2.send(value: i + 1)
  75. o3.send(value: i + 2)
  76. o4.send(value: i + 3)
  77. o5.send(value: i + 4)
  78. o6.send(value: i + 5)
  79. }
  80. }
  81. }
  82.  
  83. func testCombineProducer6ary() {
  84. let (s1, o1) = Signal<Int, NoError>.pipe()
  85. let (s2, o2) = Signal<Int, NoError>.pipe()
  86. let (s3, o3) = Signal<Int, NoError>.pipe()
  87. let (s4, o4) = Signal<Int, NoError>.pipe()
  88. let (s5, o5) = Signal<Int, NoError>.pipe()
  89. let (s6, o6) = Signal<Int, NoError>.pipe()
  90.  
  91.  
  92. let combined = SignalProducer.combineLatest(SignalProducer(s1), SignalProducer(s2), SignalProducer(s3),
  93. SignalProducer(s4), SignalProducer(s5), SignalProducer(s6))
  94.  
  95. o1.send(value: 0)
  96. o2.send(value: 1)
  97. o3.send(value: 2)
  98. o4.send(value: 3)
  99. o5.send(value: 4)
  100. o6.send(value: 5)
  101.  
  102. combined.startWithValues { _ in }
  103.  
  104. measure {
  105. for i in 0 ..< self.iterations {
  106. o1.send(value: i)
  107. o2.send(value: i + 1)
  108. o3.send(value: i + 2)
  109. o4.send(value: i + 3)
  110. o5.send(value: i + 4)
  111. o6.send(value: i + 5)
  112. }
  113. }
  114. }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement