2013-06-05 複数の例外を別の例外にして送出し直す速度比較 ruby あるメソッドが複数種類のエラーを上げてくるので、それをまとめて別の種類のエラーに読みなおすという場面がある。 たとえば Rails で ActiveRecord が上げてきたエラーをコントローラで扱いレスポンスを操作するためのエラーに読み替えるとか、 通信ライブラリのエラーをアプリケーション内の対応するエラーに読み替えるとか。 この書き方がふたつあって、どちらが速いか。 私は rescue 文の連続より case のほうがコストが低いので、 B のほうが速いと予想した。事実そのとおりだった。 (この例ではまとめて捉えてしまって StandardError(ex.message) ひとつで済むわけだが、当然、中身の処理がちがう場合を想定している)。 A begin err = [AError, BError, CE