Я нахожу причину, по которой в котлине есть fastForEach (я проверил, что он включен в пакет androidx.compose.ui.util), когда у нас уже есть forEach? Почему они использовали быстро с ним? Когда нам следует использовать его, когда следует избегать. Правильные примеры для понимания будут лучше.
Из справочной документации :
Выполняет итерацию
List
, используя индекс, и вызываетaction
для каждого элемента. Это не выделяет итератор, напримерIterable.forEach
Не используйте для коллекций, полученных из общедоступных API, поскольку они могут не поддерживать эффективный произвольный доступ, и этот метод на самом деле может быть намного медленнее. Используйте только для коллекций, созданных кодом, который мы контролируем, и которые, как известно, поддерживают произвольный доступ.
Короче говоря, это вариант forEach
, который позволяет избежать выделения объектов и, следовательно, может быть более производительным для коллекций, поддерживающих произвольный доступ. На kotlinlang.org есть соответствующая тема с более подробными обсуждениями.
Поскольку не все коллекции поддерживают произвольный доступ (см. RandomAccess; в теме, на которую есть ссылка, даже упоминаются некоторые случаи, когда это может вызвать реальные проблемы), и, как и в случае со всеми улучшениями производительности, вы узнаете об этом только в том случае, если проведете тесты и измерения, я Лично я буду придерживаться значения по умолчанию forEach
, пока не заметите проблему в этой части кода. А затем вы можете рассмотреть возможность его замены и посмотреть, действительно ли это основная проблема.