Skip to content

Commit 279401e

Browse files
authored
Merge pull request #127 from carlos-contreras/format-vs-round-and-to-s
Add benchmark for format() vs round().to_s
2 parents 3e74a66 + f3e8b1c commit 279401e

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,27 @@ Comparison:
268268
OpenStruct: 96855.3 i/s - 16.56x slower
269269
```
270270

271+
##### Kernel#format vs Float#round().to_s [code](code/general/format-vs-round-and-to-s.rb)
272+
273+
```
274+
$ ruby -v code/general/format-vs-round-and-t
275+
o-s.rb
276+
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
277+
Warming up --------------------------------------
278+
Float#round 106.645k i/100ms
279+
Kernel#format 84.304k i/100ms
280+
String#% 78.635k i/100ms
281+
Calculating -------------------------------------
282+
Float#round 1.570M (± 3.2%) i/s - 7.892M in 5.030672s
283+
Kernel#format 1.144M (± 3.0%) i/s - 5.733M in 5.015621s
284+
String#% 1.047M (± 4.2%) i/s - 5.269M in 5.042970s
285+
286+
Comparison:
287+
Float#round: 1570411.4 i/s
288+
Kernel#format: 1144036.6 i/s - 1.37x slower
289+
String#%: 1046689.1 i/s - 1.50x slower
290+
```
291+
271292
### Array
272293

273294
##### `Array#bsearch` vs `Array#find` [code](code/array/bsearch-vs-find.rb)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
require 'benchmark/ips'
2+
3+
NUM = 1.12678.freeze
4+
5+
def fast
6+
NUM.round(2).to_s
7+
end
8+
9+
def avg
10+
format('%.2f', NUM)
11+
end
12+
13+
def slow
14+
'%.2f' % NUM
15+
end
16+
17+
Benchmark.ips do |x|
18+
x.report('Float#round') { fast }
19+
x.report('Kernel#format') { avg }
20+
x.report('String#%') { slow }
21+
x.compare!
22+
end

0 commit comments

Comments
 (0)