我尝试优化一个添加矢量的函数。我做了两个不同的版本:
(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等。