2010-11-16 18 views
5

Tôi cần tìm hiểu, từ bên trong chương trình Common Lisp, bao nhiêu bộ nhớ hiện đang được sử dụng.Cách sử dụng bộ nhớ hiện tại ở Lisp

Tôi được biết là không có phương pháp di động (chức năng tiêu chuẩn room in thông tin vào đầu ra tiêu chuẩn ở dạng văn bản thay vì trả về dưới dạng giá trị), nhưng sb-kernel:dynamic-usage hoạt động trong SBCL.

Tương đương với các triển khai Common Lisp khác là gì? Hoặc là có một cách khác để giải quyết vấn đề này tôi nên xem xét?

Trả lời

10

Nó có thể không giúp bạn nhiều, nhưng dù sao:

Bạn có thể bắt đầu ra của (phòng) và phân tích nó.

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

Trả về trên một chuỗi với đầu ra của ROOM.

Ngoài ra, nó có thể giúp yêu cầu kích thước bộ nhớ của quá trình thông qua cuộc gọi bên ngoài đến lệnh unix tiêu chuẩn (nếu bạn đang sử dụng Unix).

4

Đối với những thứ mà hầu như mọi hỗ trợ triển khai thực hiện, nhưng không giống nhau (vì nó không có trong CL), một cách tiếp cận phổ biến là tạo một thư viện có tên là trivial-.

Nếu bạn bắt đầu một gói như trivial-memory và cung cấp triển khai đầu tiên, tôi chắc chắn chúng tôi có thể khiến mọi người đóng góp chức năng cho trình biên dịch Lisp yêu thích của họ theo thứ tự ngắn. :-)

+0

Tôi chắc chắn có thể tạo một gói bộ nhớ tầm thường trên github và điền vào các trường hợp tôi biết. Bạn có vẻ lạc quan về triển vọng của việc đóng góp :-) bạn có biết một nơi thích hợp để công bố những điều này, hoặc là có một số khía cạnh khác của cộng đồng Lisp bạn có trong tâm trí mà tôi không quen thuộc với? – rwallace

+1

Tôi chỉ lạc quan vì nó có vẻ như chỉ là một cuộc gọi chức năng nhỏ, mỗi, bạn cần phải nhận được. :-) Nếu tôi đã cố gắng để có được một cái gì đó như thế này công bố, tôi có thể thử nhận Xach để viết blog về nó, có nghĩa là nó sẽ có được trên planet.lisp.org. Nếu có một hoặc hai cách triển khai phổ biến mà bạn không thể nhận được câu trả lời, bạn luôn có thể đăng câu hỏi cụ thể về nó tại đây trên S.O. Chúc may mắn! – Ken

Các vấn đề liên quan