FastForEach против ForEach | Когда что использовать? | Котлин | Андроид

Я нахожу причину, по которой в котлине есть fastForEach (я проверил, что он включен в пакет androidx.compose.ui.util), когда у нас уже есть forEach? Почему они использовали быстро с ним? Когда нам следует использовать его, когда следует избегать. Правильные примеры для понимания будут лучше.

1
0
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из справочной документации :

Выполняет итерацию List, используя индекс, и вызывает action для каждого элемента. Это не выделяет итератор, например Iterable.forEach

Не используйте для коллекций, полученных из общедоступных API, поскольку они могут не поддерживать эффективный произвольный доступ, и этот метод на самом деле может быть намного медленнее. Используйте только для коллекций, созданных кодом, который мы контролируем, и которые, как известно, поддерживают произвольный доступ.

Короче говоря, это вариант forEach, который позволяет избежать выделения объектов и, следовательно, может быть более производительным для коллекций, поддерживающих произвольный доступ. На kotlinlang.org есть соответствующая тема с более подробными обсуждениями.

Поскольку не все коллекции поддерживают произвольный доступ (см. RandomAccess; в теме, на которую есть ссылка, даже упоминаются некоторые случаи, когда это может вызвать реальные проблемы), и, как и в случае со всеми улучшениями производительности, вы узнаете об этом только в том случае, если проведете тесты и измерения, я Лично я буду придерживаться значения по умолчанию forEach, пока не заметите проблему в этой части кода. А затем вы можете рассмотреть возможность его замены и посмотреть, действительно ли это основная проблема.

Другие вопросы по теме

Похожие вопросы

Почему сетевой вызов не запускается при использовании модификации с помощью Jetpack Compose mvvvm
Невидимый текст при возобновлении работы из стека
Исправлено исключение java.lang.SecurityException: один из RECEIVER_EXPORTED или RECEIVER_NOT_EXPORTED должен быть указан, когда получатель... во Flutter (Android)
Как НЕ создавать проекты с помощью Jetpack Compose с помощью Android Studio
Как уменьшить весь контент пользовательского интерфейса, чтобы он поместился в области предварительного просмотра в Jetpack Compose?
Как сделать так, чтобы составной текст занимал x% ширины строки, когда в строке есть IconButton?
Как при авторизации с помощью Android Authorization API предотвратить появление всплывающего окна подтверждения разрешения каждый раз?
Jetpack составляет навигацию: почему у меня неправильная иерархия пунктов назначения?
Ошибка сборки: произошел сбой при выполнении org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
Android Media3: Как добавить кнопки поиска в медиа-уведомление?