Skip to content

Commit a3ca904

Browse files
committed
[Array] Add #size for completeness in number of elements example.
closes #58
1 parent 4590063 commit a3ca904

File tree

3 files changed

+23
-17
lines changed

3 files changed

+23
-17
lines changed

README.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,22 +165,27 @@ Comparison:
165165
find: 0.2 i/s - 3137489.63x slower
166166
```
167167

168-
##### `Array#count` vs `Array#size` [code](code/array/count-vs-size.rb)
168+
##### `Array#length` vs `Array#size` vs `Array#count` [code](code/array/length-vs-size-vs-count.rb)
169+
170+
Use `#length` when you only want to know how many elements in the array, `#count` could also archieve this. However `#count` should be use for counting specific elements in array. [Note `#size` is an alias of `#length`](https://github.com/ruby/ruby/blob/f8fb526ad9e9f31453bffbc908b6a986736e21a7/array.c#L5817-L5818).
169171

170172
```
171-
$ ruby -v code/array/count-vs-size.rb
173+
$ ruby -v code/array/length-vs-size-vs-count.rb
172174
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
173175
174176
Calculating -------------------------------------
175-
#length 133.526k i/100ms
176-
#count 127.400k i/100ms
177+
Array#length 172.998k i/100ms
178+
Array#size 168.130k i/100ms
179+
Array#count 164.911k i/100ms
177180
-------------------------------------------------
178-
#length 8.793M (± 5.5%) i/s - 43.930M
179-
#count 7.339M (± 5.2%) i/s - 36.691M
181+
Array#length 11.394M (± 6.1%) i/s - 56.743M
182+
Array#size 11.303M (± 6.5%) i/s - 56.324M
183+
Array#count 9.195M (± 8.6%) i/s - 45.680M
180184
181185
Comparison:
182-
#length: 8793196.2 i/s
183-
#count: 7339410.7 i/s - 1.20x slower
186+
Array#length: 11394036.7 i/s
187+
Array#size: 11302701.1 i/s - 1.01x slower
188+
Array#count: 9194976.2 i/s - 1.24x slower
184189
```
185190

186191
##### `Array#shuffle.first` vs `Array#sample` [code](code/array/shuffle-first-vs-sample.rb)

code/array/count-vs-length.rb

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
require 'benchmark/ips'
2+
3+
ARRAY = [*1..100]
4+
5+
Benchmark.ips do |x|
6+
x.report("Array#length") { ARRAY.length }
7+
x.report("Array#size") { ARRAY.size }
8+
x.report("Array#count") { ARRAY.count }
9+
x.compare!
10+
end

0 commit comments

Comments
 (0)