Fast Ruby
From: fast-ruby
This is a comparation between ruby methods.
- | Faster | Slower |
---|---|---|
Array | Array[0], Array[-1] | Array.first, Array.last |
Array | bsearch | find |
Array | unshift | insert |
Array | length, size | count |
Array | sample | shuffle.first |
Date | iso8601(string) | parse(string) |
Enumerable | map | each { push } |
Enumerable | each | for .. in |
Enumerable | while index < ARRAY.size | each_with_index |
Enumerable | ARRAY.inject(:+) , ARRAY.inject(&:+) | inject {|a,i| a + i} |
Enumerable | ARRAY.flat_map {|e| [e,e]} | ARRAY.map {|e| [e,e]}.flatten |
Enumerable | ARRAY.reverse_each {|x| x} | ARRAY.reverse.each … |
Enumerable | ARRAY.detect {} | ARRAY.select {}.first |
Enumerable | sort_by(&:name), sort_by {|e| e.name} | sort {|a,b| a.name <=> b.name} |
Enumerable | min_by {|x| x.succ} | sort_by {|x| x.succ}.first |
General | a, b, c = 1, 2, 3 | a = 1, b = 2, c = 3 |
General | respond_to? | begin - rescue |
General | NUM.round(2).to_s | format(‘%.2f’, NUM), ‘%.2f’ % NUM |
General | while true | loop do |
Hash | Hash[HASH] | HASH.dup |
Hash | HASH_WITH_SYMBOL[:fast] | HASH_WITH_STRING[“fast”] |
Hash | dig | [:a][:b][:c] |
Hash | sort_by {|k, v| k}.to_h | sort.to_h |
Hash | each_key | keys.each |
Hash | key? KEY, value? KEY | keys.include?, values.include? |
Proc and block | Symbol#to_proc: map(&:to_s) | map {|i| i.to_s} |
String | match?(/boo/) | =~ /boo/, match(/boo/) |
String | ”#{foo} #{bar}“, ‘foo’ ‘bar’ | ‘foo’.concat ‘bar’, ‘foo’ + ‘bar’ |
String | end_with?, start_with? | match?(/regex/), =~ |
String | sub | gsub |
String | tr | gsub |
String | remove extra space: squeeze(” “) | gsub(/ +/, “ “) |
String | delete_suffix | chomp, sub |