- UID
- 14
- 积分
- 8264
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-4
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
关于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 |
|