优化sbcl向量加法

时间:2015-03-08 17:35:47

标签: common-lisp

我尝试优化一个添加矢量的函数。我做了两个不同的版本:

(defun v+.1 (&rest vectors)
  (apply #'map 'vector #'+ vectors))

(defun v+.2 (&rest vectors)
  (apply #'map-vector #'+ vectors))
;;where #'map-vector is a self-written function, that only works for vectors
即使我使用ftype或inline-declamations,

#'v+.2也比#'v+.1快。 但是,当我调用(map 'vector #'+ x ...)(map-vector #' x ...)x ...是向量或类型变量,没有围绕它的函数,其中类型被更精确地声明,那么map变得更快,并且我自己的版本有点慢。

为什么以及我能做什么,在我经常使用的特殊功能中使用时获得地图的速度? (更多类型声明等?) 它不应该是宏,如果我想使用apply等。

0 个答案:

没有答案