Size: a a a

2021 February 14

E

Elijah in Haskell
[BRM]White Rabbit
Мы это вчера обсуждали)
сорри, пропустил
источник

[

[BRM]White Rabbit in Haskell
кана
я выше кидал тоже бенч, только по памяти
А, ну и да, точно
источник

к

кана in Haskell
чтобы проверить память, нужно --ghc-options +RTS -s
источник

DB

Danil Berestov in Haskell
кана
повторю вчерашние сообщения, это крайне неоптимальный способ, и так делать не стоит даже для поиграться

лучше так

cycle :: [Int]
cycle = let x = 0 : 1 : x in x
Я все пропустил. Tldr есть, почему одно плохо, а другое хорошо?
источник

к

кана in Haskell
не, я ошибся
источник

к

кана in Haskell
именно в этом кейсе

cycle :: [Int]
cycle = 0 : 1 : cycle


это ок
источник

к

кана in Haskell
а вот

cycle xs = xs : cycle xs

будет генерировать новые xs в памяти по мере потребления
источник

к

кана in Haskell
а

cycle xs = let r = xs : r in r

не будет, r будет шарится в памяти
источник

DB

Danil Berestov in Haskell
Прикона
источник

к

кана in Haskell
собственно тест
источник

к

кана in Haskell
Переслано от кана
вот такой тест:

main = print $ length (take 100000000 (cycle [1, 2, 3]))

твоя версия на первом скрине и моя на втором
источник

к

кана in Haskell
Переслано от кана
источник

к

кана in Haskell
Переслано от кана
источник

к

кана in Haskell
хотя мне нужно мнение более опытного человека
источник

к

кана in Haskell
max residency то одинаковый
источник

к

кана in Haskell
то есть я так понимаю просто мы больше времени проводим в гц
источник

к

кана in Haskell
f list = let x = list <> x in x
источник

к

кана in Haskell
f list = list <> f list
источник

к

кана in Haskell
ну да, мы просто дольше в гц сидим, второй значительно дольше работает
источник

MK

Maxim Koltsov in Haskell
кана
f list = list <> f list
ты посмотри насколько больше тут аллокаций
источник