Как правило, вызов ((A)a).method()
будет (очень немного) быстрее, так как JIT-компилятор знает (статически) конкретный метод, который должен быть вызван, и поэтому может вызывать A.method
напрямую.Вызов его через интерфейс I
требует проверки во время выполнения фактического типа объекта, на который указывает ссылка, и последующей отправки этой реализации.Однако у меня нет ссылок на это.
Я знаю, что компилятор Java JIT имеет некоторые оптимизации в этом отношении, так как каждый вызов метода является виртуальным - он предполагаеткэширует наиболее часто используемую реализацию конкретного метода интерфейса и оптимизирует для этого случая..NET JIT не нуждается в этом почти так же сильно, как методы должны быть явно виртуальными.
Это очень случай микрооптимизации, который вам действительно не нуженбеспокоиться о.