分岐先アドレスをメモリ上に置く動的ディスパッチであっても賢いコンパイラは1対1でしか呼び出されない処理や短い処理は呼び出し元にインライン展開してディスパッチそのものがなくなるのよ。
実行時に飛び先を変える必要があればそもそも静的ディスパッチとか不可能だし。
そして重い処理や分岐予測が外れた場合はディスパッチのオーバーヘッドなんて無視できる。
分岐予測は分岐命令のアドレスと分岐先アドレスの対応を記録して決定するので分岐先アドレスがコードに書いてあったかメモリに書いてあったかは関係ない。