а почему String.split().filer{}.foreach{} гораздо быстрее String.splitToSequence().filer{}.foreach{} ?
Потому что вы не уточнили входные данные? :)
Скорее всего результат аналогичен любой произвольной задаче с ленивым и неленивым вычислением. В случае ленивых операций у вас есть накладные расходы, но нету промежуточных коллекций, ибо вы делаете только один проход. В случае неленивых операций у вас куча накладных расходов уходят (лямбды не только не надо создавать и хранить, но они просто заинлайнятся), но на каждую операцию будет создаваться по коллекции (вроде такую вещь под капотом проще оптимизировать ещё, но тут я не эксперт, так что цитировать не стоит :D). Обычно считается, что при достаточно большом размере исходной коллекции расходы на неленивый подход дороже.