Текущее использование памяти в Лиспе - PullRequest
5 голосов
/ 16 ноября 2010

Мне нужно выяснить изнутри программы Common Lisp, сколько памяти используется в данный момент.

Мне дано понять, что не существует переносимого метода (стандартная функция room печатает информацию в стандартный вывод в текстовом виде вместо ее возврата в качестве значения), но sb-kernel:dynamic-usage работает в SBCL.

Каковы эквиваленты в других реализациях Common Lisp? Или есть другой способ решить эту проблему, на которую я должен обратить внимание?

Ответы [ 2 ]

10 голосов
/ 16 ноября 2010

Это может вам не сильно помочь, но в любом случае:

Вы можете захватить вывод (комната) и проанализировать его.

(with-output-to-string (*standard-output*)
  (room))

Выше возвращает строку с выводом ROOM.

Кроме того, это может помочь запросить объем памяти процесса посредством внешнего вызова стандартной команды unix (если вы используете Unix).

4 голосов
/ 16 ноября 2010

Для вещей, которые поддерживает практически каждая реализация, но не одинаково (потому что это не в CL), один общий подход - сделать библиотеку с именем trivial- любой.

Если вы запустили пакет, подобный trivial-memory, и предоставили первую реализацию, я уверен, что мы могли бы заставить всех в кратчайшие сроки внести функцию для своего любимого компилятора Lisp.: -)

...