sequence
в Котлине заставляет процесс работать лениво.На уровне JVM у вас будет класс, подобный Iterable
, который будет использовать Iterator из ArrayList для применения фильтра.
Лучше всего профилировать код на реальных данных (но 4000 элементов, вероятно, совсем немного) и посмотреть, где находятся узкие места.
Вам необходимо поместить точки в ArrayList.Это означает, что вам не нужна лень вообще.Я бы проголосовал за использование функции .filter { .. }
inline в ArrayList.Лямбда встраивается в код в этом случае, нет вызова метода для элемента.Проверьте байт-код.Возможно, вы даже можете заменить диапазоны сравнениями.
Если вам нужна большая скорость - вы можете попробовать заменить ArrayList> на примитивные типы, например, используйте IntArray
или LongArray
(вы можете закодировать два Int
как один Long
. Но, пожалуйста,, профилируйте существующий код до