Один или несколько ссылок в Clojure? - PullRequest
2 голосов
/ 02 января 2011

Я разрабатываю приложение clojure, которое интенсивно использует STM.Лучше ли использовать один глобальный реф или вообще меньший реф в общем.Каждая ссылка будет хранить данные, как в таблице реляционной базы данных, поэтому будет несколько ссылок.

Ответы [ 2 ]

2 голосов
/ 02 января 2011

Я обычно считаю, что лучше свести к минимуму количество ссылок.

Ключевые причины:

  • Часто полезно обрабатывать большие части состояния приложения как единые неизменяемые блоки (например, чтобы можно было легко создавать моментальные снимки для анализа или передавать функции тестирования)
  • При использовании большого количества маленьких ссылок будет больше накладных расходов
  • Это упрощает ваше пространство имен верхнего уровня

Конечно, это в конечном итоге будет зависеть от вашей рабочей нагрузки и требований параллелизма, но мой общий совет будет заключаться в том, чтобы использовать как можно меньше ссылок, пока вы не будете уверены, что вам нужно больше.

2 голосов
/ 02 января 2011

Возможное преимущество использования меньшего количества ссылок состоит в том, что вам будет легче понять, что происходит в вашем предположительно многопоточном приложении.

Возможное преимущество использования большего количества ссылок заключается в том, что вы будете меньше блокироватькод за раз и увеличивающейся скоростью.

Если у вас есть ссылка на таблицу, и вам необходимо поддерживать целостность данных между двумя таблицами, то вы будете нести ответственность за реализацию этой логики, так как STM не знает окак данные соотносятся между таблицами.

Ваш ответ может заключаться в том, как часто изменение в одной таблице будет влиять на другую, и будет ли разбито ваше единственное упоминание на одно упоминание в таблице даже вообще заметно увеличить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...