[Ruby][Sorbet] パフォーマンス上の問題が出た時の対応

Sorbetはデフォルトだとランタイムチェックも行われる挙動なので若干のオーバーヘッドが常に存在しています。

このオーバーヘッドが重大なパフォーマンス上の問題になる場合には、下記のようにchecked(:never)等を指定してランタイムチェックの実行を行わないようにすることで対応できます。

1
sig {params(a: String).returns(Integer).checked(:never)}

上記の書き方をした場合のオーバーヘッドさえも許容できない場合には、下記の書き方で対応することができます。

1
T::Sig::WithoutRuntime.sig { params(a: String).returns(Integer) }

上記でも許容できない場合にはsigを完全に外すとかRubyやめるとかになるかと。

当然のことながら基本的にはランタイムチェックを外さないことが推奨されています。

ref

Built with Hugo
テーマ StackJimmy によって設計されています。