看过 长老ll_J的 “自定义函数” 的文章后,就习惯了 不打lambda
今天无聊就 测试了下 这种 另类的自定义函数 是否 既省时又省事!结果大大出乎我的意料!
验证代码如下! - (defun t11 (/ t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar ''((x y)(+ x y))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar '(lambda(x y)(+ x y))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- )
- ;命令: (T11)
- ; 用时 2.92188 秒
- ; 用时 0.390625 秒
- (defun t12 (/ t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar (function(lambda(x y)(+ x y)))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar '(lambda(x y)(+ x y))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- )
- ;命令: (T12)
- ; 用时 0.40625 秒
- ; 用时 0.394531 秒
- (defun t13 (/ t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar '(lambda(x y)(+ x y))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- (setq t1 (getvar "cdate"))
- (repeat 100000(mapcar (quote(lambda(x y)(+ x y)))'(1 2 3)'(1 2 3)))
- (gxl-sys-timeout t1)
- )
- ;命令: (T13)
- ; 用时 0.386719 秒
- ; 用时 0.390625 秒
- (defun gxl-sys-timeout (t1 / t2 t3 t4 t5 t6 t7 t8)
- (setq t2 (getvar "Cdate"))
- (setq t3 t1)
- (setq t4 (fix (* 100 t3))
- t5 (- (fix (* 10000 t3)) (* t4 100))
- t6 (- (* 1000000 t3) (* t5 100) (* t4 10000))
- t7 (+ (* t4 3600) (* t5 60) t6)
- )
- (setq t3 t2)
- (setq t4 (fix (* 100 t3))
- t5 (- (fix (* 10000 t3)) (* t4 100))
- t6 (- (* 1000000 t3) (* t5 100) (* t4 10000))
- t8 (+ (* t4 3600) (* t5 60) t6)
- )
- (princ "\n 用时 ")
- (princ (- t8 t7))
- (princ " 秒 ")
- (princ)
- )
|