File tree Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -1038,6 +1038,26 @@ Array#each_w/_object: 1352851.8 i/s - 1.88x slower
1038
1038
Hash#select-include : 760944.2 i/s - 3.34x slower
1039
1039
```
1040
1040
1041
+ ##### ` Hash#values_at ` vs ` Hash#slice#values `
1042
+ [ code] ( code/hash/values_at-vs-slice-values.rb )
1043
+
1044
+ To select hash values by keys.
1045
+
1046
+ ```
1047
+ $ ruby -v code/hash/values_at-vs-slice-values.rb
1048
+ ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]
1049
+ Warming up --------------------------------------
1050
+ Hash#values_at 284.628k i/100ms
1051
+ Hash#slice#values 230.279k i/100ms
1052
+ Calculating -------------------------------------
1053
+ Hash#values_at 7.179M (± 7.4%) i/s - 35.863M in 5.034179s
1054
+ Hash#slice#values 4.458M (± 4.1%) i/s - 22.337M in 5.019922s
1055
+
1056
+ Comparison:
1057
+ Hash#values_at : 7178610.6 i/s
1058
+ Hash#slice#values: 4458017.0 i/s - 1.61x slower
1059
+ ```
1060
+
1041
1061
1042
1062
### Proc & Block
1043
1063
Original file line number Diff line number Diff line change
1
+ require 'benchmark/ips'
2
+
3
+ HASH = {
4
+ one : 'foo' ,
5
+ two : 'bar' ,
6
+ three : 'baz' ,
7
+ four : 'qux'
8
+ }
9
+ KEYS = %i[ one three ]
10
+
11
+ def fast
12
+ HASH . values_at ( *KEYS )
13
+ end
14
+
15
+ def slow
16
+ HASH . slice ( *KEYS ) . values
17
+ end
18
+
19
+ Benchmark . ips do |x |
20
+ x . report ( 'Hash#values_at ' ) { fast }
21
+ x . report ( 'Hash#slice#values' ) { slow }
22
+ x . compare!
23
+ end
You can’t perform that action at this time.
0 commit comments