gzcsun
发表于 2024-6-26 13:42:50
本帖最后由 gzcsun 于 2024-6-26 13:48 编辑
(defun c:gg4(/ enlst etime ss stime)
(setq ss(ssget))
(setq stime(getvar "MILLISECS"))
(setqenlst (vl-remove-if-not '(lambda (arg) (equal (type arg) 'ENAME)) (mapcar 'cadr (ssnamex SS))))
(setq etime(getvar "MILLISECS"))
(princ(strcat "\n处理完毕!耗时:"(rtos(- etime stime)2 0)" ms"))
(princ))
命令: GG1
找到 843180 个
处理完毕!耗时:1469 ms
命令: GG2
找到 843180 个
处理完毕!耗时:1187 ms
命令: GG3
找到 843180 个
处理完毕!耗时:297 ms
命令: GG4
找到 843180 个
处理完毕!耗时:1640 ms
耗时最慢!
外国很多用 ssnamex 。
但 ssnamex 是最慢的。
aws
发表于 2024-6-26 13:56:14
gzcsun 发表于 2024-6-26 13:42
(defun c:gg4(/ enlst etime ss stime)
(setq ss(ssget))
(setq stime(getvar "MILLISECS"))
84万个图元,297毫秒处理完毕,你这啥处理器啊,不可思议啊
masterlong
发表于 2024-6-26 14:22:00
(repeat(setq n(sslength ss))
(setq enlst(cons (ssname ss(setq n(1- n))) enlst))
)
我感觉这样应该会更快一点
小菜123
发表于 2024-6-26 14:49:35
编译以后新开一个CAD测试,得出结论才准确
aws
发表于 2024-6-26 16:24:47
小菜123 发表于 2024-6-26 14:49
编译以后新开一个CAD测试,得出结论才准确
有道理呀,我都是飞诗里面测试的,我记得编译后,速度确实可以提高很多。
小菜123
发表于 2024-6-26 16:52:11
我的函数也是用的第3种方法,如果结论不一致,请发出来
fangmin723
发表于 2024-6-26 17:27:50
那你用我的那个test编译测试看看
aws
发表于 2024-6-26 17:35:49
fangmin723 发表于 2024-6-26 17:27
那你用我的那个test编译测试看看
确实是while比repeat快
---取3次测试结果,十万个圆:
GG1处理:耗时:297 ms;耗时:281 ms;耗时:235 ms;
GG2处理:耗时:281 ms;耗时:266 ms;耗时:250 ms;
GG3处理:耗时:47 ms;耗时:63 ms;耗时:78 ms;
GG4处理:耗时:31 ms;耗时:47 ms;耗时:31 ms;
GG5处理:耗时:313 ms;耗时:313 ms;耗时:281 ms;
---取3次测试结果,百万个圆:
GG1处理:耗时:3484 ms;耗时:4047 ms;耗时:2688 ms;
GG2处理:耗时:4266 ms;耗时:4141 ms;耗时:2703 ms;
GG3处理:耗时:719 ms;耗时:516 ms;耗时:609 ms;
GG4处理:耗时:375 ms;耗时:375 ms;耗时:391 ms;
GG5处理:耗时:4031 ms;耗时:3094 ms;耗时:4485 ms;
fangmin723
发表于 2024-6-26 18:27:37
aws 发表于 2024-6-26 17:35
确实是while比repeat快
---取3次测试结果,十万个圆:
GG1处理:耗时:297 ms;耗时:281 ms;耗时:235 ...
`中微子
发表于 2024-6-27 00:34:20
我也来测试一下.
10万个圆,CAD2024,CPU12700K,32GDDR5,A2000显卡.
---取3次测试结果,十万个圆:
GG1处理:耗时:188 ms;耗时:187 ms;耗时:156 ms;
GG2处理:耗时:172 ms;耗时:172 ms;耗时:156 ms;
GG3处理:耗时:16 ms;耗时:110 ms;耗时:46 ms;
GG4处理:耗时:16 ms;耗时:31 ms;耗时:31 ms;
GG5处理:耗时:203 ms;耗时:188 ms;耗时:204 ms;
命令: