Converting a mutable-array into a vector in Racket (not Typed Racket) seems to 
be faster when done element-wise  instead of using mutable-array-data. Why is 
this? I always thought crossing the untyped/typed boundary as little as 
possible makes things run faster.

This little test program 

#lang racket
(require math/array)

(define arr (mutable-array #[#[1. 2. 3.] #[4. 5. 6.]]))

(define (array->vector1 arr)
  (for/vector [(a (in-array arr))] a))

(define (array->vector2 arr)
  (mutable-array-data arr))

(define N 5000)
(time (for [(i N)] (array->vector1 arr)))
(time (for [(i N)] (array->vector2 arr)))


results in

racket arr-vec.rkt   
cpu time: 946 real time: 961 gc time: 58
cpu time: 1270 real time: 1283 gc time: 4

Best,
Berthold

-- 
-----------------------------------------------------------------------
Berthold Bäuml -- Head of Autonomous Learning Robots Lab
DLR, Robotics and Mechatronics Center (RMC)
Münchner Str. 20, D-82234 Wessling
Phone +49 8153 282489
http://www.robotic.de/Berthold.Baeuml

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to