(import defstruct (chicken fixnum)) (defstruct many-slots a b c d e f g h i j k l m n o p q r s t u v w x y z) (defstruct many-initialized-slots (a 1) (b 2) (c 3) (d 4) (e 5) (f 6) (g 7) (h 8) (i 9) (j 10) (k 11) (l 12) (m 13) (n 14) (o 15) (p 16) (q 17) (r 18) (s 19) (t 20) (u 21) (v 22) (w 23) (x 24) (y 25) (z 26)) (print "Making a lot of empty objects without default values") (time (let lp ((res #f) (i 0)) (when (fx< i 100000) (lp (make-many-slots) (fx+ i 1))))) (newline) (print "Making a lot of populated objects without default values") (time (let lp ((res #f) (i 0)) (when (fx< i 100000) (lp (make-many-slots a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 g: 7 h: 8 i: 9 j: 10 k: 11 l: 12 m: 13 n: 14 o: 15 p: 16 q: 17 r: 18 s: 19 t: 20 u: 21 v: 22 w: 23 x: 24 y: 25 z: 26) (fx+ i 1))))) (newline) (print "Making a lot of empty objects with default values") (time (let lp ((res #f) (i 0)) (when (fx< i 100000) (lp (make-many-initialized-slots) (fx+ i 1))))) (print "Making a lot of populated objects with default values") (time (let lp ((res #f) (i 0)) (when (fx< i 100000) (lp (make-many-initialized-slots a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 g: 7 h: 8 i: 9 j: 10 k: 11 l: 12 m: 13 n: 14 o: 15 p: 16 q: 17 r: 18 s: 19 t: 20 u: 21 v: 22 w: 23 x: 24 y: 25 z: 26) (fx+ i 1))))) (newline)