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

Reply via email to