help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Does network data really cons strings?


From: Kevin Rodgers
Subject: Re: Does network data really cons strings?
Date: Tue, 13 Jan 2004 09:58:16 -0700
User-agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2

Jesper Harder wrote:

Kevin Rodgers <ihs_4664@yahoo.com> writes:
Jesper Harder wrote:
I was a bit surprised to see that network data (or any data received
from processes) conses Lisp strings.

Is it just a quirk of `memory-use-counts' or is it for real?  Why
does it need to cons Lisp strings if the data is only inserted in a
buffer?

So that the data is available to the process filter?

Right, it would need to cons strings if there are filters.  But it
also happens when there are no filters.


That'd be a nice optimization: don't bother allocating strings for processes

that don't have a filter.


Hmm, I now notice that it also conses cons cells like mad:

(let (m1 process)
    (with-current-buffer (get-buffer-create " *test*")
      (erase-buffer))
    (setq process (open-network-stream "test" " *test*" "news.gmane.org" 119))
    (setq m1 (memory-use-counts))
    (process-send-string process "LIST\n")
    (sit-for 50)
    (process-send-string process "QUIT\n")
    (mapcar* '- (memory-use-counts) m1))

=> (48055 3 0 0 509059 2 0 2063)

(with-current-buffer " *test*" (buffer-size))
=> 252123

Roughly two char-cells for every byte of data received!  That seems
rather excessive ... and I wonder what all those cons cells are used
for.


Yikes, maybe a bug report is in order...


Emacs 20.5 seems to do _far_ better for the same data (on a faster
network connection, though):

     (4103 0 0 0 4168 0 0)


--
Kevin Rodgers



reply via email to

[Prev in Thread] Current Thread [Next in Thread]