1

Я заметил, что мое приложение создает огромные суммы FqNameUnsafe и FqName экземпляров. Когда они созданы? Как я могу избежать их создания? (Мне нужно уменьшить создание мусора в моем приложении.)Kotlin: Избегайте создания FqNameUnsafe и FqName

enter image description here

ответ

2

У меня нет FqNameUnsafe или FqName в моих проектах Котлин. Он включен только в котлин-отражатель (a separate JAR file).

Если вам не нужно использовать kotlin-reflection в приложении, не включайте его в свой путь к классам. В общем, Kotlin компилирует довольно простой JTM-байт-код и не будет создавать много накладных расходов, если они есть, а иногда и выполняет обычную Java, потому что он может inline functions (вы можете найти «служебные» данные в Kotlin Language Documentation для получения дополнительной информации).

Если вам нужно использовать kotlin-reflect, однако, насколько я могу судить, нет никаких вариантов, чтобы настроить, как он это делает, и вы понесете costs typical to reflection (плюс что-то особенное для отражения Котлина, для которого у меня есть " t была в состоянии найти любую полезную документацию).

+0

Имеет смысл спасибо. – Jire

1

ОБНОВЛЕНИЕ (2016-09-13): вопрос был fixed и не будет воспроизводимым, начиная с Kotlin 1.1.

Я думаю, что это может быть несколько лучше, если вы вызываете KClass#qualifiedName реже или кешируете его результаты. Текущая реализация этого свойства (и других, работающих с квалифицированными именами) не так оптимизирована, как должна быть. Фактически, в настоящее время мы не фокусируемся на производительности в реализации рефлексии, но это, вероятно, будет улучшено после Kotlin 1.0.

Просьба сообщить об этой проблеме (и любых других вас) по адресу youtrack.jetbrains.com, если вы хотите отслеживать ее статус. Спасибо!

+0

Спасибо за это. Таким образом, корень моей проблемы заключается в том, что у меня возникают проблемы с кешированием, потому что я разрешаю тип reified generic. Тип, который я извлекаю, не действует так, как я ожидаю, поэтому я использовал «квалифицированное имя» как ленточную помощь. Сначала вы дали ответ на другой вопрос, но сначала это было очень неясно. С тех пор я обновил вопрос и жду ответа на него, если вы все еще интересуетесь: http://stackoverflow.com/questions/33980151/kotlin-reified-generics-dont-seem-to-work-right-for- Еще раз спасибо за сравнение хэш-сравнений. – Jire

 Смежные вопросы

  • Нет связанных вопросов^_^