почему отражение замедляет Android телефон - PullRequest
3 голосов
/ 31 марта 2011

Я много раз читал, что отражение замедлит работу телефона.Насколько это верно?

Например, в моем случае я получаю некоторые параметры от веб-службы, которые имеют то же имя, что и параметры класса, который есть в моем приложении для Android.поэтому я просто устанавливаю значения этих параметров, используя поля java и рефлексию ... кажется, что это не снижает производительность

Ответы [ 2 ]

6 голосов
/ 31 марта 2011

Взгляните на этот вопрос . По сути, вы выходите за пределы оптимизаций, которые может выполнять компилятор, потому что отражение происходит динамически.

Если вы не выполняете много вызовов отражений (например, было бы плохо делать внутри getView объекта ListView), вы, вероятно, можете сойти с рук. Это нужно использовать, просто будьте осторожны.

4 голосов
/ 31 марта 2011

Насколько это правда?

Это медленнее, чем без отражения. Это определенно то, что вы хотите избежать в циклах или во время быстрой обработки пользовательского интерфейса (например, прокрутка ListView).

я получаю некоторые параметры от веб-службы, которые имеют то же имя, что и параметры класса, которые есть в моем приложении для Android. поэтому я просто устанавливаю значения этих параметров, используя поля Java и отражения ... кажется, что это не снижает производительность ..

Да, хотя в этом случае он может быть незаметен для пользователя.

Кто-нибудь может объяснить мне факт, лежащий в основе этой идеи о рефлексии, замедляющей производительность?

См. Ссылку , предоставленную @Brian Брайаном в его ответе. Имейте в виду, что размышления о Dalvik (виртуальной машине в Android) могут быть медленнее, чем размышления о Java VM - я действительно уверен, что это не быстрее, во всяком случае.

...