Size: a a a

Clojure — русскоговорящее сообщество

2021 June 29

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
да. вопрос не столько про безопасность. сколько про готовность к конкурентному запуску на одном и том же входе.
хватит ли штатной memoize ума не запускать тяжёлый расчёт второй раз.
источник

ID

Ilya Dubov in Clojure — русскоговорящее сообщество
не успело посчитаться
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Лучше пользовать сторонние либы для мемоизации. В стандартной функции нет механизма инвалидации кэша, что очень усложняет жизнь. Ну или использовать только на чистые функции, что имеет очень лимитированный юзкейс
источник

A

Andrey in Clojure — русскоговорящее сообщество
разве в core.memoize нет? Там же есть всякие ttl, lru, fifo
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Я конкретно про ту функцию
источник

A

Andrey in Clojure — русскоговорящее сообщество
а
источник

A

Andrey in Clojure — русскоговорящее сообщество
ну да, там довольно примитивный подход, но иногда и его хватает
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
memoise работает на атоме. Установка значения в атом потокобезопасна, но сам код memoise от этого не застрахован.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
скажем, первый тред начал вычисление, потом ты запустил второй -- он проверил, что в атоме нет ключа и попер вычислять тоже
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Эта проблема называется транзакционный кеш, когда если кто-то начал вычислять данные, то другие в это время не будут триггерить новые вычисления
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
но такой кеш очень нетривиальный, и как правило такой проблемы нет.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
как вариант ты можешь сделать локальный промис, который хранит признак того, что кто-то сейчас вычисляет данные для их будущей записи в кеш
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
остальные клиенты дерефят его по таймауту, скажем 10 секунд. Если был таймаут, они начинают свои вычисления.
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
А, уже написали ))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Я мемоизацию и кэширование на базе caffeine делаю. С core.memoize у меня были issues.
источник
2021 June 30

SP

Stas P in Clojure — русскоговорящее сообщество
господа. объясните плиз смысл #'here-goes-something что за два магических символа вначале?
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
источник

SP

Stas P in Clojure — русскоговорящее сообщество
не пойму чем этот вар может быть полезен
источник

LL

Lämppi Lütti in Clojure — русскоговорящее сообщество
Через него можно достучаться до приватных дифинишенов
источник