(defun stk-int ()
#+allegro
- (ff:with-stack-fobject (ptr :int)
+ (ff:with-stack-fobject (ptr :int)
(setf (ff:fslot-value ptr) 0))
#+lispworks
(fli:with-dynamic-foreign-objects ((ptr :int))
#+cmu
(let ((ptr (alien:make-alien (alien:signed 32))))
(declare ;;(type (alien (* (alien:unsigned 32))) ptr)
- (dynamic-extent ptr))
+ (dynamic-extent ptr))
(setf (alien:deref ptr) 0)
(alien:free-alien ptr))
#+sbcl
#+cmu
(let ((ptr (alien:make-alien (alien:array (alien:signed 32) 10))))
(declare ;;(type (alien (* (alien:unsigned 32))) ptr)
- (dynamic-extent ptr))
+ (dynamic-extent ptr))
(setf (alien:deref ptr 5) 0)
(alien:free-alien ptr))
#+sbcl
(let ((ptr (sb-alien:make-alien (sb-alien:array (sb-alien:signed 32) 10))))
(declare ;;(type (sb-alien (* (sb-alien:unsigned 32))) ptr)
- (dynamic-extent ptr))
+ (dynamic-extent ptr))
(setf (sb-alien:deref ptr 5) 0)
(sb-alien:free-alien ptr))
)
(defun stk-vs-stat ()
(format t "~&Stack allocation, Integer")
- (time (dotimes (i 1000)
- (dotimes (j 1000)
- (stk-int))))
+ (time (dotimes (i 1000)
+ (dotimes (j 1000)
+ (stk-int))))
(format t "~&Static allocation, Integer")
- (time (dotimes (i 1000)
- (dotimes (j 1000)
- (stat-int))))
+ (time (dotimes (i 1000)
+ (dotimes (j 1000)
+ (stat-int))))
(format t "~&Stack allocation, Vector")
- (time (dotimes (i 1000)
- (dotimes (j 1000)
- (stk-int))))
+ (time (dotimes (i 1000)
+ (dotimes (j 1000)
+ (stk-int))))
(format t "~&Static allocation, Vector")
- (time (dotimes (i 1000)
- (dotimes (j 1000)
- (stat-int))))
+ (time (dotimes (i 1000)
+ (dotimes (j 1000)
+ (stat-int))))
)
(stk-vs-stat)
-
+