所以,选择集操作,尽量用1+
 - (setq ss (ssget "x"))
- (defun ss1 (ss / i lst e)
- (setq i -1)
- (while (setq e (ssname ss (setq i (1+ i))))
- (setq lst (cons e lst))
- )
- (princ)
- )
- (defun ss2 (ss / i lst e)
- (setq i -1)
- (while (setq e (ssname ss (setq i (+ i 1))))
- (setq lst (cons e lst))
- )
- (princ)
- )
- (defun c:tt ()
- (XD::Benchmark
- '((ss1 ss)
- (ss2 ss)
- )
- )
- (princ)
- )
测试:
- 命令: (repeat 5 (c:tt))
- Elapsed milliseconds / relative speed for 16384 iteration(s):
- (SS1 SS).....1625 / 1.04 <fastest>
- (SS2 SS).....1688 / 1 <slowest>
- Elapsed milliseconds / relative speed for 8192 iteration(s):
- (SS2 SS).....1719 / 1.18 <fastest>
- (SS1 SS).....2032 / 1 <slowest>
- Elapsed milliseconds / relative speed for 4096 iteration(s):
- (SS1 SS).....1000 / 1 <fastest>
- (SS2 SS).....1000 / 1 <slowest>
- Elapsed milliseconds / relative speed for 4096 iteration(s):
- (SS2 SS).....1063 / 1.01 <fastest>
- (SS1 SS).....1078 / 1 <slowest>
- Elapsed milliseconds / relative speed for 8192 iteration(s):
- (SS1 SS).....1750 / 1.02 <fastest>
- (SS2 SS).....1781 / 1 <slowest>
复制代码
基本上是1+要快
|