Выдержка из книги по лестницам:
Если эффективность очень важна, склоняйтесь к использованию класса. Большинство Java Большинство сред выполнения Java делают вызов виртуального метода члена класса более быстрой операцией, чем ...
Выдержка из книги по лестницам:
Если эффективность очень важна, склоняйтесь к использованию класса. Большинство Java Большинство сред выполнения Java делают вызов виртуального метода члена класса более быстрой операцией, чем ...
Выдержка из книги по лестницам:
Если эффективность очень важна, склоняйтесь к использованию класса. Большинство Java среды выполнения делают вызов виртуального метода члена класса более быстрой операцией чем вызов метода интерфейса. Черты компилируются в интерфейсы и поэтому может иметь небольшие накладные расходы на производительность. Однако вам следует сделайте этот выбор только в том случае, если вы знаете, что рассматриваемая черта представляет собой производительность узкое место и иметь доказательства того, что использование класса вместо этого решает проблему.
Я написал простой код, чтобы увидеть, что на самом деле происходит за кулисами. И я заметил, что
invokevirtual
используется в случае абстрактного класса, иinvokeinterface
используется в случае интерфейса. Но независимо от того, какой код я написал, они всегда выполнялись примерно одинаково. Я использую HotSpot 1.6.0_18 в серверном режиме.JIT так хорошо выполняет оптимизацию? Есть ли у кого-нибудь образец кода, подтверждающий утверждение из книги о том, что
invokevirutal
является более быстрой операцией?