Comments 4
ой началось...
Интересно, как там с накладными расходами на все это счастье..
Сколько дополнительных аллокаций, сколько процессора...
С ходу много — простой бенч даёт 15 аллокаций на итерацию (извлечение 1 значения) на бесконечный стрим (nats из примера) + 1 map (powers из примера).
При этом если брать пачкой (используя не Head
, а Take
), то количество аллокаций растёт кратно, что печально.
Но это не выглядит как шоустоппер — сейчас код идеоматичный и простой. Если нужно выжимать из него соки, есть несколько понятных путей: реюз внутренних структур, батчинг при работе с массивом (почти наверняка можно сделать Take(x,10)
более экономичной чем Head(x)
x10 в близкое к 10 количество раз), пуллинг.
Вот всего этого космического зоопарка и хотели избежать авторы Go...
Потоковая обработка данных в go