Насколько хорошо Clojure работает, когда дело доходит до памяти? - PullRequest
11 голосов
/ 30 октября 2010

Что касается фона, я пишу веб-сервис в Clojure (используя Compojure в этом случае).Я не беспокоюсь о производительности, которая кажется достаточно хорошей, и я всегда могу запустить больше экземпляров сервера.

Даже если реализация Clojure будет в 2-10 раз медленнее, чем соответствующая реализация Java, я бы всегдапредпочитаю более чистый код перед необработанной производительностью.

Конечно, это зависит от того, что вы делаете, но я хотел бы знать, есть ли у вас какие-либо реальные впечатления, когда речь идет об объеме памяти любого типасерверные решения в Java против Clojure?

Ответы [ 2 ]

13 голосов
/ 30 октября 2010

У меня был активный веб-сервер на основе Compojure, работающий более четырех месяцев без единой заминки (то есть никаких исключений OutOfMemoryException или чего-то подобного ....).Таким образом, Clojure кажется достаточно надежным в долго работающих серверных приложениях.

Веб-сервер работает на Amazon EC2 с ок.Объем памяти 230 МБ.

Это правда, что Clojure относительно жаден к памяти - в дополнение к обычным издержкам JVM он делает много вещей, таких как генерация динамических классов в фоновом режиме, которые поглощают память.Он также генерирует много временных объектов (например, создание объектов-последовательностей) и полагается на GC, чтобы прояснить ситуацию.

Это на самом деле дизайнерское решение в Clojure - поскольку память дешева, а современная сборка мусора выполняетХорошо, Clojure имеет тенденцию распределять память довольно свободно, чтобы максимизировать гибкость и производительность.

2 голосов
/ 31 октября 2010

Другая проблема заключается в простом конструктивном недостатке в JVM: он использует UTF-16 в качестве внутреннего кодирования строки, поэтому в наборе данных, ориентированном на американцев, все строки занимают вдвое больше памяти, чем должны.

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