找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 904|回复: 4

[研讨] 关于VLisp效率的测试

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-10-14 11:28:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
关于VLisp效率的测试

偶尔翻出来AutoCAD Sample\Activex 目录下的例子al-tst.lsp vla-tst.lsp,

程序功能:绘制2000个矩形-〉改颜色-〉删除所有矩形,测试程序执行时间

al-tst.lsp 原文件绘制采用 pline 命令,该颜色采用 entupd , 删除采用 循环删除单个实体

vla-tst.lsp 原文件绘制采用 vla-AddLightWeightPolyline 改颜色采用遍历Modelspace并vla-put-color
            删除同样采用遍历并vla-erase

测试环境(WinXP[sp1] + AutoCAD2004[中文网络授权]PIV2.4 80G 1G DDR333 GFX4 MX440 AGP8X)
说明:每一步测试后均退出CAD重起(整理内存),连续执行时程序执行时间会受其他因素的影响。

源文件测试

命令: al-tst

1========================================
Creating 2000 PolyLines.
Changing 2000 LWPolylines to Red Color.
Erasing 2000 LWPolylines.

; Time (secs): 26.125

命令: vla-tst
Creating 2000 LWPolylines.
Changing 2000 LWPolylines to Red Color.
Erasing 2000 LWPolylines.

; Time (secs): 18.391


2==============================================
改造 al-tst.lsp, 最后的删除采用 (command ".erase" ss "")

命令: al-tst

Creating 2000 PolyLines.
Changing 2000 LWPolylines to Red Color.
Erasing 2000 LWPolylines.

; Time (secs): 15.094

同样改造vla-tst.lsp

命令: vla-tst
Creating 2000 LWPolylines.
Changing 2000 LWPolylines to Red Color.
Erasing 2000 LWPolylines.

; Time (secs): 18.547

可以看到对al-tst.lsp 的效率改善是非常明显的,说明vla方法中消耗的时间不在
删除一步上,继续下面的测试


3===========================================
第二次去掉删除一步,仅进行绘制和改颜色

命令: vla-tst
Creating 2000 LWPolylines.
Changing 2000 LWPolylines to Red Color.

; Time (secs): 18.266


命令: al-tst

Creating 2000 PolyLines.
Changing 2000 LWPolylines to Red Color.

; Time (secs): 15.328

与第一次的对比,可以看出vlax-for比while + entupd 的效率要低


将该颜色部分改用command命令

命令: al-tst

Creating 2000 PolyLines.
Changing 2000 LWPolylines to Red Color.

; Time (secs): 15.063

command 命令修改选择集操作时间还是省些



4=============================================
第三次仅测试绘制一步(绘制多义线)


命令: vla-tst
Creating 2000 LWPolylines.

; Time (secs): 7.36

命令: al-tst

Creating 2000 PolyLines.

; Time (secs): 14.765

vla方法比command效率明显要高

下面是al-tst.lsp中用entmake 生成 2000 pline 方法的时间

命令: al-tst

Creating 2000 PolyLines.

; Time (secs): 0.313


从中可以看出vla方法在生成实体方面还是不如entmake快捷, 而且vlax-for遍历
是比较耗时间的,对于编程不一定强调用一种方法,最快速的是几种方法的组合
比如本例中,生成实体用entmake方法,后面两步用command命令对选择集操作

命令: al-tst

Creating 2000 PolyLines.
Changing 2000 LWPolylines to Red Color.
Erasing 2000 LWPolylines.

; Time (secs): 0.641
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-2-26 20:37:13 | 显示全部楼层
对编程很有指导意义。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-27 20:10:55 | 显示全部楼层
这样的分析很好,确是,不应在一棵树上吊死,多头并进总是好的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-8-27 09:30:16 | 显示全部楼层
好贴子啊!!
看了这个贴子以后对要大量调用的子程序优化有很好指导性!
看了些贴在一个程序中改entdel 为ssadd后调用命令erase
速度竟快了1/4~!~多谢多谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

发表于 2013-5-27 19:49:28 | 显示全部楼层
.我一直有这样的感觉,只是没有用数据证明,谢谢楼主的测试!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 20:29 , Processed in 0.229086 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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