找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 362|回复: 2

[研讨] 来,我们看看普通的加法,对不同数据类型的执行效率

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-17 10:45:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. (XD::Benchmark
  2.   '((1+ 1)
  3.     (+ 1 1)
  4.     (+ 1 1.0)
  5.     (+ 1.0 1.0)
  6.    )
  7. )




  1. Elapsed milliseconds / relative speed for 32768 iteration(s):

  2.     (1+ 1)..........1313 / 1.17 <fastest>
  3.     (+ 1 1).........1485 / 1.03
  4.     (+ 1 1.0).......1485 / 1.03
  5.     (+ 1.0 1.0).....1531 / 1 <slowest>

复制代码


1、整数相加, 1+函数 比 + 快
2、整数和实数相加,效率基本相同
3、实数相加,效率最慢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2017-5-17 10:59:37 | 显示全部楼层
所以,选择集操作,尽量用1+

  1. (setq ss (ssget "x"))
  2. (defun ss1 (ss / i lst e)
  3.   (setq i -1)
  4.   (while (setq e (ssname ss (setq i (1+ i))))
  5.     (setq lst (cons e lst))
  6.   )
  7.   (princ)
  8. )
  9. (defun ss2 (ss / i lst e)
  10.   (setq i -1)
  11.   (while (setq e (ssname ss (setq i (+ i 1))))
  12.     (setq lst (cons e lst))
  13.   )
  14.   (princ)
  15. )
  16. (defun c:tt ()
  17.   (XD::Benchmark
  18.     '((ss1 ss)
  19.       (ss2 ss)
  20.      )
  21.   )
  22.   (princ)
  23. )



测试:



  1. 命令: (repeat 5 (c:tt))
  2. Elapsed milliseconds / relative speed for 16384 iteration(s):

  3.     (SS1 SS).....1625 / 1.04 <fastest>
  4.     (SS2 SS).....1688 / 1 <slowest>
  5. Elapsed milliseconds / relative speed for 8192 iteration(s):

  6.     (SS2 SS).....1719 / 1.18 <fastest>
  7.     (SS1 SS).....2032 / 1 <slowest>
  8. Elapsed milliseconds / relative speed for 4096 iteration(s):

  9.     (SS1 SS).....1000 / 1 <fastest>
  10.     (SS2 SS).....1000 / 1 <slowest>
  11. Elapsed milliseconds / relative speed for 4096 iteration(s):

  12.     (SS2 SS).....1063 / 1.01 <fastest>
  13.     (SS1 SS).....1078 / 1 <slowest>
  14. Elapsed milliseconds / relative speed for 8192 iteration(s):

  15.     (SS1 SS).....1750 / 1.02 <fastest>
  16.     (SS2 SS).....1781 / 1 <slowest>

复制代码


基本上是1+要快

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2017-5-17 11:10:17 | 显示全部楼层
本帖最后由 newer 于 2017-5-17 11:16 编辑

那遍历选择集递增写法
(ssname ss (setq i (1+ i)))

(ssname ss i)
(setq i (1+ i))

两种写法哪个快?

  1. (setq ss (ssget "x"))

  2. (defun ss1 (ss / i lst e)
  3.   (setq i -1)
  4.   (while (setq e (ssname ss (setq i (1+ i))))
  5.    )
  6.   (princ)
  7. )

  8. (defun ss4 (ss / i lst e)
  9.   (setq i 0)
  10.   (while (setq e (ssname ss i))               
  11.     (setq i (1+ i))
  12.   )
  13.   (princ)
  14. )


  15. (defun c:tt1 ()
  16.   (XD::Benchmark
  17.     '((ss1 ss)
  18.       (ss4 ss)
  19.      )
  20.   )
  21.   (princ)
  22. )




  1. 命令: (repeat 5 (c:tt1))
  2. Elapsed milliseconds / relative speed for 16384 iteration(s):

  3.     (SS4 SS).....1406 / 1.11 <fastest>
  4.     (SS1 SS).....1563 / 1 <slowest>
  5. Elapsed milliseconds / relative speed for 8192 iteration(s):

  6.     (SS1 SS).....1625 / 1.12 <fastest>
  7.     (SS4 SS).....1828 / 1 <slowest>
  8. Elapsed milliseconds / relative speed for 8192 iteration(s):

  9.     (SS4 SS).....1735 / 1.09 <fastest>
  10.     (SS1 SS).....1891 / 1 <slowest>
  11. Elapsed milliseconds / relative speed for 8192 iteration(s):

  12.     (SS4 SS).....1578 / 1.06 <fastest>
  13.     (SS1 SS).....1672 / 1 <slowest>
  14. Elapsed milliseconds / relative speed for 8192 iteration(s):

  15.     (SS1 SS).....1672 / 1.04 <fastest>
  16.     (SS4 SS).....1734 / 1 <slowest>

复制代码


基本上,是分开写的要快
(ssname ss i)
.....
(setq i (1+ i))


大家也可以在你的机器上测试下上面代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-21 22:29 , Processed in 0.418734 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表