Javaや.NETはネイティブコードに変換することもできて、ネイティブコードへの変換時に型の情報を元に動的ディスパッチの呼び出しそのものをなくして呼び出し先の関数の本体を呼び出し元に展開する、ということが行われる

そうしてできたネイティブコードとネイティブ化してないコードとどちらが高速に動作するかというとネイティブ化してないコードの方だったりする

これはなぜかと言うとJITコンパイラが実行時に統計情報を使って最適化を行えるからなんよ、ネイティブコードへの変換では型の情報のみを使って最適化が行われるけど、JITでは統計情報による最適化ができる

というわけでオブジェクト指向言語でプログラムを書くときはランタイムがよろしくやってくれるので動的か静的かなんてのは意識する必要ないんですよって話