yanshengjiang 发表于 2025-2-20 14:58:33

没事水个贴: 测试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
                  )
          )
      )
      )
    )
)

飞雪神光 发表于 2025-2-20 15:25:04

你这结果太夸张了 是你电脑不行吗 另一贴我测试 实际代码运行时间第一种是15秒多 其他的25秒左右
这个转表 ss->lst 3秒内 s2e 8秒内 mj:ss->list 5秒内 lm:ss->ent 6秒多 测试图形为1百万个矩形

yanshengjiang 发表于 2025-2-20 17:25:54

飞雪神光 发表于 2025-2-20 15:25
你这结果太夸张了 是你电脑不行吗 另一贴我测试 实际代码运行时间第一种是15秒多 其他的25秒左右
这个转表 ...

13600+3070 感觉还可以吧。不知道为啥结果不一样。:lol

yanshengjiang 发表于 2025-2-20 17:26:56

你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...

我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件:lol

你有种再说一遍 发表于 2025-2-20 15:28:00

天呐,10万个加入四叉树我才80毫秒...

菜卷鱼 发表于 2025-2-20 17:10:09

你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...

把四叉树贴出来啊

你有种再说一遍 发表于 2025-2-20 17:25:20

菜卷鱼 发表于 2025-2-20 17:10
把四叉树贴出来啊

博文都写了几年了,你居然还要贴,有啥好贴的...

飞雪神光 发表于 2025-2-20 17:31:20

yanshengjiang 发表于 2025-2-20 17:25
13600+3070 感觉还可以吧。不知道为啥结果不一样。

Win10 i5 8300H

你有种再说一遍 发表于 2025-2-20 18:23:30

yanshengjiang 发表于 2025-2-20 17:26
我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件

超过10w要开并行,速度是自由自在

GEGEYANG88 发表于 2025-2-20 19:15:43

是不是我糊涂了?你们好像在讨论薪水?80毫秒,13600+3070,8300H,超过10w要开并行?把话说白了,好不好?
页: [1] 2
查看完整版本: 没事水个贴: 测试4个选择集转表函数的速度