はじめに この記事は食べログ Advent Calendar 2020 18日目の記事です。 こんにちは、食べログWebエンジニアの@an_sonyです。 普段は予約サービスのシステム開発をしています。 最近、GoToEatオンライン事業により予約サービスの利用者が増加し(ご利用ありがとうございます!)パフォーマンスチューニングをすることが増えました。 そのチューニング方法の一つで、リストの要素検索処理をArray#include?ではなくSet#include? を使って高速化する をよく使ったのですが、ある時「あれ、ArrayとSetって見た目は似てるのに、なんでこの処理って速いんだろう?」という疑問が浮かびました。 この理由、みなさん答えられますか? 解明するにはSetクラスの中身(実装)を見れば良さそうなのですが、そういえば自分、RubyやRailsの中身を一度も見たことありません