[gambit-list] redefining symbols with 'load'?
James Long
longster at gmail.com
Sun Sep 2 02:40:27 EDT 2007
Ok, I just ran some tests to see the difference of calling code from a
'load' and an 'include'. I'm a bit confused. The tests with the
loadable module were actually faster then the test that included the
code. Can someone explain this?
--- util.scm
(package* util/v1.0.0
(provide:
(define* (getattr name alist _)))
(maintainer: "James Long <james at coptix.com>")
(author: "James Long <james at coptix.com>")
(homepage: "http://smallnum.blogspot.com")
(description: "Utility")
(keywords: flow))
(define* (getattr alist name (default #f))
(let ((r (assq name alist)))
(if r (cdr r) default)))
--- moduletest.scm
(package* moduletest/v1.0.0
(require: util/v1.0.0))
(define lst '((name . "James")))
(define (start n i)
(if (< n i)
(let* ((name (getattr lst 'name))
(chr (string-ref name 0)))
(start (+ n 1) i))))
(start 0 10000000)
When the 'util' package is compiled inline (it uses "include"):
% time ./moduletest
./moduletest 2.38s user 0.04s system 90% cpu 2.655 total
% time ./moduletest
./moduletest 2.36s user 0.02s system 98% cpu 2.418 total
And when the 'util' package is loaded in with 'load':
% time ./moduletest
./moduletest 2.00s user 0.03s system 90% cpu 2.252 total
% time ./moduletest
./moduletest 1.99s user 0.02s system 99% cpu 2.029 total
I'm sure that I misunderstand the difference of 'load' and 'include',
and I would be happy if someone could shed some light for me. I found
a couple useful posts in the archive but not much. (I'm on OS X,
macbook pro, with gambit v4.0)
On 9/2/07, James Long <longster at gmail.com> wrote:
...
More information about the Gambit-list
mailing list