没事水个贴: 测试4个选择集转表函数的速度
本帖最后由 yanshengjiang 于 2025-2-20 15:07 编辑;收集的4个选择集转表的程序作者不详 如有侵权请联系我删除
;一万个图元的选择集转图元名列表速度测试
;最开始一百万个图元用ss->lst很长时间没结果,后来五万个图元5分钟还是没结果,无耐采用1w个图元做4个函数的测试。
;最后单独用(lm:ss->ent(ssget))选择五万个对象做了下测试大约耗时240秒
通过直接循环处理数据的测试,感觉选择集转表再做后续的操作非常浪费时间,不知道我理解的对不对。
详情见另一帖:三种方式的循环处理时间测试http://bbs.mjtd.com/thread-192152-1-1.html
;选择集转表 耗时22秒
(defun ss->lst(ss)
(vl-remove-if(function listp)(mapcar (function cadr) (ssnamex SS)))
)
;选择集转图元列表耗时24秒
(defun s2e(ss)
(if(=(type ss)'pickset)
(vl-remove'nil(mapcar'(lambda(x / e)(if(=(type(setq e(cadr x)))'ename)e))(ssnamex ss))))
)
;选择集转表耗时26秒
(defun mj:ss->list
(ss / is-ename)
(defun is-ename(arg)
(equal
(type arg)
'ename
)
)
(vl-remove-if-not 'is-ename
(mapcar
'cadr
(ssnamex ss)
)
)
)
;麦克 选择集2图元表 耗时26秒
(defun lm:ss->ent (ss / i l)
(if ss
(progn
(repeat (setq i
(sslength ss)
)
(setq l (cons (ssname ss
(setq i
(1- i)
)
) l
)
)
)
)
)
) 你这结果太夸张了 是你电脑不行吗 另一贴我测试 实际代码运行时间第一种是15秒多 其他的25秒左右
这个转表 ss->lst 3秒内 s2e 8秒内 mj:ss->list 5秒内 lm:ss->ent 6秒多 测试图形为1百万个矩形 飞雪神光 发表于 2025-2-20 15:25
你这结果太夸张了 是你电脑不行吗 另一贴我测试 实际代码运行时间第一种是15秒多 其他的25秒左右
这个转表 ...
13600+3070 感觉还可以吧。不知道为啥结果不一样。:lol 你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...
我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件:lol 天呐,10万个加入四叉树我才80毫秒... 你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...
把四叉树贴出来啊 菜卷鱼 发表于 2025-2-20 17:10
把四叉树贴出来啊
博文都写了几年了,你居然还要贴,有啥好贴的... yanshengjiang 发表于 2025-2-20 17:25
13600+3070 感觉还可以吧。不知道为啥结果不一样。
Win10 i5 8300H yanshengjiang 发表于 2025-2-20 17:26
我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件
超过10w要开并行,速度是自由自在 是不是我糊涂了?你们好像在讨论薪水?80毫秒,13600+3070,8300H,超过10w要开并行?把话说白了,好不好?
页:
[1]
2