File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -118,6 +118,42 @@ Comparison:
118118 method_missing: 2728893.0 i/s - 1.40x slower
119119```
120120
121+ ##### Normal way to apply method vs ` &method(...) ` [ code] ( code/general/block-apply-method.rb )
122+
123+ ```
124+ $ ruby -v code/general/block-apply-method.rb
125+ ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
126+
127+ Calculating -------------------------------------
128+ normal 85.749k i/100ms
129+ &method 35.529k i/100ms
130+ -------------------------------------------------
131+ normal 1.867M (± 7.6%) i/s - 9.347M
132+ &method 467.095k (± 6.4%) i/s - 2.345M
133+
134+ Comparison:
135+ normal: 1866669.5 i/s
136+ &method: 467095.4 i/s - 4.00x slower
137+ ```
138+
139+ ##### ` define_method ` vs ` module_eval ` for Defining Methods [ code] ( code/general/define_method-vs-module-eval.rb )
140+
141+ ```
142+ $ ruby -v code/general/define_method-vs-module-eval.rb
143+ ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
144+
145+ Calculating -------------------------------------
146+ module_eval with string 125.000 i/100ms
147+ define_method 138.000 i/100ms
148+ -------------------------------------------------
149+ module_eval with string 1.130k (±20.3%) i/s - 5.500k
150+ define_method 1.346k (±25.9%) i/s - 6.348k
151+
152+ Comparison:
153+ define_method: 1345.6 i/s
154+ module_eval with string: 1129.7 i/s - 1.19x slower
155+ ```
156+
121157
122158### Array
123159
Original file line number Diff line number Diff line change 1+ require "benchmark/ips"
2+
3+ def do_something ( n )
4+ 4 *n + 2
5+ end
6+
7+ def fast
8+ [ 1 , 2 , 3 ] . map { |n | do_something ( n ) }
9+ end
10+
11+ def slow
12+ [ 1 , 2 , 3 ] . map ( &method ( :do_something ) )
13+ end
14+
15+ Benchmark . ips do |x |
16+ x . report ( "normal" ) { fast }
17+ x . report ( "&method" ) { slow }
18+ x . compare!
19+ end
You can’t perform that action at this time.
0 commit comments