- UID
- 110608
- 积分
- 328
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-3-7
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<P><FONT face=Verdana>本文对ssget的几个选癫问方法进行了测?lt;BR>要求:选择指定的坐标范围内的物体.<BR>根据使用的选择方法不同而得到不同的响应时间.<BR>结论如下:<BR>1.采用先选择后过滤(s1,s2,s3这三个函数):这种方法的速度取决于一次所能选择到的物体的个数:<BR>在估计能选择到的物体小于1000个的时候是有优势的,超过这个数以后,就很慢了.<BR>2.采用选择过滤器中的坐标过滤功能(s4):这种方法的速度取决于文件的大小,<BR>当文件很小时,速度是最快的,当文件有点大的时候,速度是最慢的<BR>3.程序中如果有大量的选择操作时,不防先判断一下文件大小,以及估计一下选择集的大小,以考滤采用何种选择过滤方式</FONT></P><FONT face=Verdana>
<P><BR>新建一个文件下的测试数据:<BR>100个圆:<BR>函数:#<USUBR @04b1e118 S1>测试结果00:00:00:341<BR>函数:#<USUBR @04b1e140 S2>测试结果00:00:00:250<BR>函数:#<USUBR @04b1e168 S3>测试结果00:00:00:280<BR>函数:#<USUBR @04b1e190 S4>测试结果00:00:00:029<BR>500个圆:<BR>函数:#<USUBR @04b1e118 S1>测试结果00:00:00:782<BR>函数:#<USUBR @04b1e140 S2>测试结果00:00:00:630<BR>函数:#<USUBR @04b1e168 S3>测试结果00:00:00:640<BR>函数:#<USUBR @04b1e190 S4>测试结果00:00:00:070<BR>1000个圆:<BR>函数:#<USUBR @04b1e118 S1>测试结果00:00:01:752<BR>函数:#<USUBR @04b1e140 S2>测试结果00:00:01:571<BR>函数:#<USUBR @04b1e168 S3>测试结果00:00:01:512<BR>函数:#<USUBR @04b1e190 S4>测试结果00:00:00:130</P>
<P>原来一个13M的图形下的测试数据:<BR>100个圆<BR>函数:#<USUBR @04a2dc80 S1>测试结果00:00:00:169<BR>函数:#<USUBR @04a2dcbc S2>测试结果00:00:00:230<BR>函数:#<USUBR @04a2dcf8 S3>测试结果00:00:00:150<BR>函数:#<USUBR @04a2dd48 S4>测试结果00:00:02:152</P>
<P>500个圆:<BR>函数:#<USUBR @04a2dc80 S1>测试结果00:00:00:841<BR>函数:#<USUBR @04a2dcbc S2>测试结果00:00:00:730<BR>函数:#<USUBR @04a2dcf8 S3>测试结果00:00:00:671<BR>函数:#<USUBR @04a2dd48 S4>测试结果00:00:02:302</P>
<P>1000个圆:<BR>函数:#<USUBR @04a2dc80 S1>测试结果00:00:01:821<BR>函数:#<USUBR @04a2dcbc S2>测试结果00:00:01:542<BR>函数:#<USUBR @04a2dcf8 S3>测试结果00:00:01:251<BR>函数:#<USUBR @04a2dd48 S4>测试结果00:00:02:253</P>
<P> </P>
<P>

- ;;;VisualLisp函数测试 1
- (defun c:tt ()
- (setvar "cmdecho" 0)
- (setq re_times 10)
- (setq funlist (list s1 s2 s3 s4))
- ;(setq testlist (list 1111 2222 3333 4444 5555 6666 7777 8888 9999))
- (setq pt1 (list 0 0 0)
- pt2 (list 0 2000 0)
- pt3 (list 2000 2000 0)
- pt4 (list 2000 0 0)
- )
- (repeat 100 (addcircle));每次增加100圆,对于s1,s2,s3这三个方法影响大,对s4影响不大
- (foreach fun funlist
- (progn
- (setq t1 (getvar "date")) ;_记录开始时间t1
- (repeat re_times
- (fun)
- ) ;_repeat
- (setq t2 (getvar "date")) ;_记录结束时间t2
- (princ "函数:")(princ fun)(princ "测试结果")
- (princ (menucmd (strcat "M=$(edtime," (rtos (- t2 t1) 2 16) ",HH:MM:SS:MSEC)")))
- (princ "\n")
- ) ;_progn
- ) ;_foreach
- (setvar "cmdecho" 1)
- (princ)
- )
- (defun s1()
- (setq ss(ssget "F" (list pt1 pt2)
- (list (cons 0 "CIRCLE")))
- )
- (ss_filter ss)
- (setq ss nil)
- )
- (defun s2()
- (setq ss (ssget "CP" (list pt1 pt2 pt3 pt4)
- (list (cons 0 "CIRCLE")))
- )
- (ss_filter ss)
- (setq ss nil)
- )
- (defun s3()
- (setq ss(ssget "C" pt1 pt3
- (list (cons 0 "CIRCLE")))
- )
- (ss_filter ss)
- (setq ss nil)
- )
- (defun s4();_这个函数是最慢的!
- (setq ss(ssget "X"
- (list (cons -4 "<AND")
- (cons 0 "CIRCLE")
- (cons -4 ">=,>=,*")
- (list 10 -1 -1 0)
- (cons -4 "<=,<=,*")
- (list 10 1 1 0)
- (cons -4 "AND>")
- )
- )
- )
- (setq ss nil)
- )
- (defun ss_filter(ss)
- (setq i% 0)
- (repeat (sslength ss)
- (progn
- (setq sn (ssname ss i%))
- (setq ent(entget sn))
- (setq ptmid (assoc 10 ent))
- (setq xmid (cadr ptmid))
- (setq ymid (cadr ptmid))
- (if (or (> xmid 1 ) (> ymid 1) (< xmid -1) (< ymid -1) ) (setq ss(ssdel en ss )) )
- (setq i% (1+ i%))
- );_progn
-
- );_repeat
- ss
- )
- (defun addcircle ()
- (command "circle" (list 0 0 0) 1000 )
- )
|
|