明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3327|回复: 6

[讨论] 这样的速度测试结果是不是很离谱?

[复制链接]
发表于 2014-5-24 04:28:16 | 显示全部楼层 |阅读模式
本帖最后由 llsheng_73 于 2014-5-24 04:58 编辑

有人在百度知道上问怎么改图层颜色,他说用几十个(command"layer""c"色"层""")运行很慢
于是无聊进行了一下测试,感觉结果比较离谱,下边用了三种方法,一种是他的方法,我称为经典command语句(因为书上都这么教的这里鄙视一下写书的,总是教最不好用的)
第二种把command分开在循环内外,暂时称为优化command语句吧(很多时候都会这么做,显然已经跳出教材的圈子)
第三种当然是都知道的速度最快的entmod(这个速度最快但写起来它的组码比较烦)
虽然测试前对三种方法用时差异有个大概估计,但没想到的是结果让人很吃惊
  1. (setq t1(getvar'date));;方法一,经典command语句
  2. (repeat 5000
  3.   (command"layer""C"1 "0" ""))
  4. (strcat"用时"(rtos(setq t1(-(getvar'date)t1)t1(* 86400.0 (- t1 (fix t1)))))"秒")
  5. (setq t1(getvar'date));;方法二,优化command语句
  6. (command"layer")
  7. (repeat 5000
  8.   (command"C"1 "0"))
  9. (command"")
  10. (strcat"用时"(rtos(setq t1(-(getvar'date)t1)t1(* 86400.0 (- t1 (fix t1)))))"秒")
  11. (setq b nil)
  12. (repeat 5000
  13.   (setq b(cons(list"0" 1)b)a 0))
  14. (setq t1(getvar'date));;方法三,entmod
  15. (foreach x b
  16. (entmod(setq a(entget(TBLOBJNAME"layer"(car x)))a(subst(cons 62(last x))(assoc 62 a)a)))
  17. )
  18. (strcat"用时"(rtos(setq t1(-(getvar'date)t1)t1(* 86400.0 (- t1 (fix t1)))))"秒")

下边是结果:
2.4568e+006
nil
"用时73.7510秒"
2.4568e+006
nil
nil
nil
"用时41.3760秒"
nil
0
2.4568e+006
((-1 . <图元名: 7ef7cc78>) (0 . "LAYER") (330 . <图元名: 7ef7cc10>) (5 . "F") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "0") (70 . 0) (62 . 1) (6 . "CONTINUOUS") (290 . 1) (370 . -3) (390 . <图元名: 7ef7e480>))
"用时1.2690秒"
你对上边这三个红色的数字作何感想呢?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-5-24 07:09:09 | 显示全部楼层
本帖最后由 lsjj 于 2014-5-24 07:11 编辑

連測結果如下,真的很離譜

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.529秒"
"用時0.374秒"
"用時0.265秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.545秒"
"用時0.359秒"
"用時0.265秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.545秒"
"用時0.359秒"
"用時0.265秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.544秒"
"用時0.374秒"
"用時0.281秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.545秒"
"用時0.359秒"
"用時0.265秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時1.545秒"
"用時0.374秒"
"用時0.312秒"

指令:
指令: (LOAD "C:/Users/T420/Desktop/test.lsp")
"用時2.074秒"
"用時0.422秒"
"用時0.327秒"
发表于 2014-5-24 08:09:08 | 显示全部楼层
再设(setvar "CMDECHO" 0)后试一下。
"用时15.8750秒"
"用时2.6880秒";关CMDECHO
"用时7.2970秒"
"用时0.9840秒";关CMDECHO
"用时0.4060秒"
发表于 2014-5-24 08:15:00 | 显示全部楼层
ZZXXQQ 发表于 2014-5-24 08:09
再设(setvar "CMDECHO" 0)后试一下。
"用时15.8750秒"
"用时2.6880秒";关CMDECHO

(setvar "CMDECHO" 0)这个对速度影响大...很有体会....command .....跟猫老师学的变形....速度差距3位数以上...
发表于 2014-5-24 08:21:18 | 显示全部楼层
学习都总是从command开始,直观容易!用command就不要考虑效率问题!要考虑效率问题,则尽量不要使用command,这是Lisp编程的一个基本原则!
发表于 2014-5-24 10:27:53 | 显示全部楼层
方法三应该把建表过程放到计时器内,否则有失公平……
发表于 2014-11-16 12:31:53 | 显示全部楼层
用时3.922秒
用时1.391秒
用时0.5秒

加了一句(setvar "CMDECHO" 0)后:
用时3.891秒
用时1.375秒
用时0.5秒

变化不大啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 23:40 , Processed in 0.196414 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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