下級エンジニアの綴

新しく発見したことを綴っていこうと思っています。夢はでっかく上級エンジニアになることです。

rubyのcountについてメモ

countを使わなくて失敗したので戒めを含めメモ。

Active Recordのデータ(配列)に対して

sizeを使えば配列を全てオンメモリで扱って、結果を返す。

countはを使えばdbに投げて結果を返してくれる。

↑のことはわかっていたけど、物理的な部分を理解しているつもりで終わっていた。

例えば、100件程度のデータならsizeの方が良いと思うが、数十万件となるとcountの方が良いと思う。

理由としては

数十万件のデータを全てメモリに載せようとするとおそらくメモリが足りずに落ちる

からである。

blank?とかpresent?とかも同じことが言える。

配列を判定する時に値が存在する、存在しないという処理も配列のデータをオンメモリで扱おうとするので仮に数十万件データが入っていると落ちる可能性がある。

array.count > 0

という処理はpresent?を使えば良いと思っていたけど、時には必要なんだなと思った。

countが使えない場合はfind_eachとかを使って頑張るしか無いかなと思う。

その辺をわかっているつもりでわかっていなかったから、不具合を産んでしまった。次は絶対に同じミスをしない。