明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 313|回复: 11

[讨论] 没事水个贴: 测试4个选择集转表函数的速度

[复制链接]
发表于 前天 14:58 | 显示全部楼层 |阅读模式
本帖最后由 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
  1. ;选择集转表   耗时22秒
  2. (defun ss->lst(ss)
  3. (vl-remove-if(function listp)(mapcar (function cadr) (ssnamex SS)))
  4. )

  5. ;选择集转图元列表  耗时24秒
  6. (defun s2e(ss)
  7.   (if(=(type ss)'pickset)
  8.     (vl-remove'nil(mapcar'(lambda(x / e)(if(=(type(setq e(cadr x)))'ename)e))(ssnamex ss))))
  9. )

  10. ;选择集转表  耗时26秒
  11. (defun mj:ss->list
  12.                    (ss / is-ename)
  13.                    (defun is-ename(arg)
  14.                      (equal
  15.                             (type arg)
  16.                             'ename
  17.                      )
  18.                    )
  19.                    (vl-remove-if-not 'is-ename
  20.                                      (mapcar
  21.                                        'cadr
  22.                                        (ssnamex ss)
  23.                                      )
  24.                    )
  25.                  )

  26.   ;麦克 选择集2图元表 耗时26秒
  27.   (defun lm:ss->ent (ss / i l)
  28.     (if ss
  29.       (progn
  30.         (repeat (setq i
  31.                       (sslength ss)
  32.                 )
  33.           (setq l (cons (ssname ss
  34.                                 (setq i
  35.                                       (1- i)
  36.                                 )
  37.                         ) l
  38.                   )
  39.           )
  40.         )
  41.       )
  42.     )
  43.   )
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 前天 15:25 | 显示全部楼层
你这结果太夸张了 是你电脑不行吗 另一贴我测试 实际代码运行时间第一种是15秒多 其他的25秒左右
这个转表 ss->lst 3秒内 s2e 8秒内 mj:ss->list 5秒内 lm:ss->ent 6秒多 测试图形为1百万个矩形
回复 支持 反对

使用道具 举报

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

13600+3070 感觉还可以吧。不知道为啥结果不一样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 17:26 | 显示全部楼层
你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...

我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件
回复 支持 反对

使用道具 举报

发表于 前天 15:28 | 显示全部楼层
天呐,10万个加入四叉树我才80毫秒...
回复 支持 反对

使用道具 举报

发表于 前天 17:10 | 显示全部楼层
你有种再说一遍 发表于 2025-2-20 15:28
天呐,10万个加入四叉树我才80毫秒...

把四叉树贴出来啊
回复 支持 反对

使用道具 举报

发表于 前天 17:25 | 显示全部楼层
菜卷鱼 发表于 2025-2-20 17:10
把四叉树贴出来啊

博文都写了几年了,你居然还要贴,有啥好贴的...
回复 支持 反对

使用道具 举报

发表于 前天 17:31 | 显示全部楼层
yanshengjiang 发表于 2025-2-20 17:25
13600+3070 感觉还可以吧。不知道为啥结果不一样。

Win10 i5 8300H
回复 支持 反对

使用道具 举报

发表于 前天 18:23 | 显示全部楼层
yanshengjiang 发表于 2025-2-20 17:26
我主要是想研究这种循环的速度,比方说我要循环100w个图块的坐标写出文本文件

超过10w要开并行,速度是自由自在
回复 支持 反对

使用道具 举报

发表于 前天 19:15 | 显示全部楼层
是不是我糊涂了?你们好像在讨论薪水?80毫秒,13600+3070,8300H,超过10w要开并行?把话说白了,好不好?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 05:25 , Processed in 0.174689 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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