Guest User

Untitled

a guest
Apr 23rd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. require 'benchmark'
  2.  
  3. def bench_enumerable_all(bm)
  4. arr = (1..10).collect{true}
  5. bm.report("1m array.all?, array 1..10") do
  6. i = 0
  7. while i<1000000
  8. arr.all?
  9. i+=1
  10. end
  11. end
  12.  
  13. bm.report("1m array.all?{|x|x==true}, 10-false array") do
  14. i = 0
  15. while i<1000000
  16. arr.all?{|x|x==true}
  17. i+=1
  18. end
  19. end
  20. end
  21.  
  22. def bench_enumerable_any(bm)
  23. arr = (1..10).collect{false}
  24. bm.report("1m array.any?, 10-false array") do
  25. i = 0
  26. while i<1000000
  27. arr.any?
  28. i+=1
  29. end
  30. end
  31.  
  32. arr = (1..10).select{true}
  33. bm.report("1m array.any?{|x| x==5},array 1..10") do
  34. i = 0
  35. while i<1000000
  36. arr.any?{|x| x== 5}
  37. i+=1
  38. end
  39. end
  40. end
  41.  
  42. def bench_enumerable_collect(bm)
  43. arr = (1..10).select{true}
  44. bm.report("1m array.collect{|x| x+1},array 1..10") do
  45. i = 0
  46. while i<1000000
  47. arr.collect{|x| x+1}
  48. i+=1
  49. end
  50. end
  51.  
  52. arr = (1..10).select{true}
  53. bm.report("1m array.collect,array 1..10") do
  54. i = 0
  55. while i<1000000
  56. arr.collect
  57. i+=1
  58. end
  59. end
  60. end
  61.  
  62. def bench_enumerable_collect!(bm)
  63. arr = (1..10).select{true}
  64. bm.report("1m array.collect!{|x| x+1},array 1..10") do
  65. i = 0
  66. while i<1000000
  67. arr.collect!{|x| x+1}
  68. i+=1
  69. end
  70. end
  71. end
  72.  
  73. def bench_enumerable_find(bm)
  74. arr = (1..10).collect
  75. bm.report("1m array.find{|x| x==5},array 1..10") do
  76. i = 0
  77. while i<1000000
  78. arr.find{|x| x==5}
  79. i+=1
  80. end
  81. end
  82. end
  83.  
  84. def bench_enumerable_each_with_index(bm)
  85. arr = (1..10).collect
  86. bm.report("1m each_with_index{|x, i| true},array 1..10") do
  87. i = 0
  88. while i<1000000
  89. arr.each_with_index{|x, index| true}
  90. i+=1
  91. end
  92. end
  93. end
  94.  
  95. def bench_enumerable_to_a(bm)
  96. arr = (1..10).collect
  97. bm.report("1m array.to_a, array 1..10") do
  98. i = 0
  99. while i<1000000
  100. arr.to_a
  101. i+=1
  102. end
  103. end
  104. end
  105.  
  106. def bench_enumerable_grep(bm)
  107. arr = (1..10).collect
  108. bm.report("1m array.grep 3..7, array 1..10") do
  109. i = 0
  110. while i<1000000
  111. arr.grep 3..7
  112. i+=1
  113. end
  114. end
  115. end
  116.  
  117. def bench_enumerable_inject(bm)
  118. arr = (1..10).collect
  119. bm.report("1m inject{|s, n| s+n},array 1..10") do
  120. i = 0
  121. while i<1000000
  122. arr.inject{|sum, n| sum + n }
  123. i+=1
  124. end
  125. end
  126. end
  127.  
  128. def bench_enumerable_max(bm)
  129. arr = (1..10).collect
  130. bm.report("1m array.max,array 1..10") do
  131. i = 0
  132. while i<1000000
  133. arr.max
  134. i+=1
  135. end
  136. end
  137. end
  138.  
  139. def bench_enumerable_min(bm)
  140. arr = (1..10).collect
  141. bm.report("1m array.min,array 1..10") do
  142. i = 0
  143. while i<1000000
  144. arr.min
  145. i+=1
  146. end
  147. end
  148. end
  149.  
  150. def bench_enumerable_reject(bm)
  151. arr = (1..10).collect
  152. bm.report("1m reject{|i|i%3==0},array 1..10") do
  153. i = 0
  154. while i<1000000
  155. arr.reject {|i| i % 3 == 0 }
  156. i+=1
  157. end
  158. end
  159. end
  160.  
  161.  
  162. if $0 == __FILE__
  163. if ARGV[0]
  164. ARGV[0].to_i.times do
  165. Benchmark.bm(40) do |bm|
  166. bench_enumerable_all(bm)
  167. bench_enumerable_any(bm)
  168. bench_enumerable_collect(bm)
  169. bench_enumerable_find(bm)
  170. bench_enumerable_each_with_index(bm)
  171. bench_enumerable_to_a(bm)
  172. bench_enumerable_grep(bm)
  173. end
  174. end
  175. else
  176. Benchmark.bmbm do |bm|
  177. bench_enumerable_all(bm)
  178. bench_enumerable_any(bm)
  179. bench_enumerable_collect(bm)
  180. bench_enumerable_collect!(bm)
  181. bench_enumerable_find(bm)
  182. bench_enumerable_each_with_index(bm)
  183. bench_enumerable_to_a(bm)
  184. bench_enumerable_grep(bm)
  185. bench_enumerable_inject(bm)
  186. bench_enumerable_max(bm)
  187. bench_enumerable_min(bm)
  188. end
  189. end
  190. end
Add Comment
Please, Sign In to add comment