Fastererメモ
Fast Rubyの内容をチェックする静的コード解析ツール(おそらくすべてではない)。fasterer 0.9.0で確認。
盲従するのでなく、パフォーマンス問題が発生したタイミングでとっかかりとして使うのが良いはず。
以下の点に注意。
- 対応しようとしている箇所がパフォーマンス問題の原因と考えられるか確認する。
- 1日1回しか実行されないコードが100ms速くなっても意味があるとはいえない。
- 利用しているRubyのバージョンでも従うべきか確認する。
- Fast Rubyにベンチマーク用のコードがある。
- 対応した結果、有意に速度改善がなされていることを確認する。
- 当該箇所のベンチマークをとって確認する。
- 対応した結果、有意にシステムの速度改善に繋がっていることを確認する。
- 当該箇所を利用している機能が速くなっていることを確認する。
以下のGemをインストールする。
group :development do
gem 'fasterer', require: false
end
.fasterer.yml
ファイルを以下の内容で作成する。
speedups:
rescue_vs_respond_to: true
module_eval: true
shuffle_first_vs_sample: true
for_loop_vs_each: true
each_with_index_vs_while: false
map_flatten_vs_flat_map: true
reverse_each_vs_reverse_each: true
select_first_vs_detect: true
sort_vs_sort_by: true
fetch_with_argument_vs_block: true
keys_each_vs_each_key: true
hash_merge_bang_vs_hash_brackets: true
block_vs_symbol_to_proc: true
proc_call_vs_yield: true
gsub_vs_tr: true
select_last_vs_reverse_detect: true
getter_vs_attr_reader: true
setter_vs_attr_writer: true
exclude_paths:
- 'vendor/**/*.rb'
- 'db/schema.rb'
bundle exec fasterer ファイルパス
で実行。