Производительность отражения - Java против CLR - PullRequest
2 голосов
/ 13 января 2009

Соответствующий пост здесь в значительной степени установил отражение в Java как на скачке производительности. Это относится и к CLR? (C #, VB.NET и т. Д.).

РЕДАКТИРОВАТЬ : Как CLR сравнивается с Java, когда дело доходит до отражения? Это когда-либо оценивалось?

Ответы [ 3 ]

3 голосов
/ 13 января 2009

Меня не очень волнует производительность создания экземпляра объекта с использованием самого отражения, но реальная производительность методов и тому подобное, поскольку в конце концов это то, что я буду использовать в классе.

Конечно, создание экземпляра занимает много времени, как можно увидеть в связанном посте, но, поскольку вы, скорее всего, используете методы объекта, а не просто создаете его, вы не должны слишком беспокоиться о производительности отражения - пока Вы не делаете вызовы метода, вызывая отраженные Method объекты!

Кроме того, вам нужен только один отраженный экземпляр объекта, используйте .clone() и другие хитрые приемы, если вам нужно создать больше копий.

0 голосов
/ 13 января 2009

Реализация по умолчанию Equals для типов значений реализована с использованием Reflection. Это работает, но это чертовски медленно и легко реализовать конкретную версию, которая намного быстрее (подвох в том, что вам также нужно реализовать GetHashCode). Насколько быстрее, конечно, зависит от фактического типа значения, но я видел некоторые огромные повышения здесь.

0 голосов
/ 13 января 2009

Да, отражение в .NET также является операцией, требующей высокой производительности, так как требует запроса таблиц метаданных в сборках.

...