So we really need an apply/vector so that Jay can write
(apply/vector make-prefab-struct v)
And for keywords, perhaps we should have an apply/hash if
we can stick keywords into the domain of a hash.
-- Matthias
On Feb 22, 2010, at 11:01 AM, Matthew Flatt wrote:
The second is faster because an intermediate list requires more
allocation than an intermediate array of values.
(The `call-with-values' expression is compiled to an internal
`apply-values' form, so no closure is allocated in that case. Also,
`make-prefab-struct' receives its arguments in an internal array in
either case.)
At Mon, 22 Feb 2010 08:42:08 -0700, Jay McCarthy wrote:
I guess my real question is: should I rely on this or is it a
coincidence?
Jay
On Mon, Feb 22, 2010 at 8:40 AM, Sam Tobin-Hochstadt <[email protected]
> wrote:
On Mon, Feb 22, 2010 at 10:37 AM, Jay McCarthy <[email protected]
>
wrote:
How should I expect these two lines to compare performance-wise:
(apply make-prefab-struct
(vector->list v))
vs
(call-with-values (lambda () (vector->values v))
make-prefab-struct)
#lang scheme
(define v '#(foo 1 2 3))
(define k 1000000)
(define (run1)
(for ((i (in-range k)))
(apply make-prefab-struct
(vector->list v))))
(define (run2)
(for ((i (in-range k)))
(call-with-values (lambda () (vector->values v))
make-prefab-struct)))
(time (run1))
(time (run2))
cpu time: 1068 real time: 1075 gc time: 60
cpu time: 864 real time: 866 gc time: 44
--
sam th
[email protected]
--
Jay McCarthy <[email protected]>
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay
"The glory of God is Intelligence" - D&C 93
_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev
_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev
_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev