Комментарии 2
Дмитрий, ну сколько можно ходить вокруг да около, мочи моей больше нет. Поэтому я буду угадывать.
Если делать чистый-чистый pull, когда значение зависимости только читается, то нужно постоянно опрашивать зависимый объект: а вдруг он изменился? Поэтому, я думаю, у вас не так, скорее всего при изменении объект через push оповещает всех подписчиков о своём изменении, подписчики помечают себя как нуждающиеся в пересчёте, а потом, когда рендер решит их перерисовать, они через pull подтянут значения. А значит, у вас сведения о зависимостях хранятся, вероятно, так:
зависимый хранит ссылки за зависимости, а также их последние значения, чтобы не пересчитывать своё значение, если ни одна из зависимостей не поменялась. Это подразумевает, что своё последнее значение тоже хранится.
зависимый хранит ссылки на тех, кто от него зависят (подписчики), чтобы уведомлять их о своём изменении.
Поправьте, где я угадал неправильно. А если правильно, то вы оптимизируете время пересчёта через немалое количество памяти.
Зачем гадать? Тут всё расписано: https://habr.com/ru/articles/1033698/
Про потребление памяти будет отдельная статья. Если вкратце, то это порядка 50Б на каждую реактивную ячейку и по 16Б на зависимость.

Перестройка реактивных потоков данных