emacs-devel
[Top][All Lists]
Advanced

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

Re: require inside functions. (was: Changes in calendar/time-date.el)


From: Kim F. Storm
Subject: Re: require inside functions. (was: Changes in calendar/time-date.el)
Date: Thu, 07 Apr 2005 23:45:31 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Lute Kamstra <address@hidden> writes:

> address@hidden (Kim F. Storm) writes:
>
> [...]
>
>> Putting require into a function _does_ slow it down.
>
> I decided to test this.  The speed effect is really minimal, 

I guess it depends on how deep down in the require alist, the symbol
is located.  I.e. if the package was not loaded before you run your
function, it will be first in the list, and so it doesn't have much
impact.

> (require 'ft) only loads a file if 'ft is not in features.  However,
> it unconditionally adds '(require . ft) to current-load-list.  If you
> call a function with require a million times, this eats up 16 MB of
> memory.

The problem seems to be that current-load-list is never truncated.
But I don't quite understand what current-load-list is good for
(outside the byte compiler).

>
> Should this be fixed somehow?

I would think so...

On my system, current-load-list contains the following after reading a few 
mails and doing M-x grep a few times.

current-load-list
((require . parse-time) (require . compile) (require . compile) (require . 
parse-time) (require . parse-time) (require . parse-time) (require . 
parse-time) (require . compile) (require . parse-time) (require . compile) 
(require . parse-time) (require . parse-time) (require . compile) (require . 
parse-time) (require . compile) (require . parse-time) (require . parse-time) 
(require . parse-time) (require . parse-time) (require . gnus-sum) (require  
sort) (require . sort) (require . sort) (require . sort) (require . sort) 
(require . sort) (require . sort) (require . sort) (require . sort) (require . 
sort) (require . sort) (require . sort) (require . sort) (require . sort) 
(require . sort) (require . sort) (require . sort) (require . sort) (require . 
sort) (require . sort) (require . sort) (require . nnml) (require . message) 
(require . message) (require . message) (require . message) (require . message) 
(require . message) (require . message) (require . message) (require . message) 
(require . message) (require . message) (require . message) (require . 
mail-utils) (require . mail-utils) (require . message) (require . message) 
(require . message) (require . message) (require . message) (require . message) 
(require . message) (require . message) (require . message) (require . message) 
(require . message) (require . parse-time) (require . parse-time) (require . 
mail-utils) (require . parse-time) (require . parse-time) (require . gnus-sum) 
(defun . message-make-address) (defun . message-make-sender) (require . 
parse-time) (require . parse-time) (require . tool-bar) (require . gnus-sum) 
(require . vc-cvs) (require . parse-time) (require . sort) (require . sort) 
(require . tool-bar) (require . nnmail) (require . nnmail) (require . nndoc) 
(require . nnmail) (require . nnmail) (require . parse-time) (require . nnmail) 
(require . nnfolder) (defun . gnus-byte-compile) (require . bytecomp) (require 
. byte-optimize) (require . nnml) (require . nnmail) (require . nnmail) 
(require . nndraft) (require . nntp) (provide . make-network-process))


-- 
Kim F. Storm <address@hidden> http://www.cua.dk





reply via email to

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