英雄所见略同,塔尔瓦。。。下面是一个快速测试:
- (setq rec (ssname (ssget ":S:E" '((0 . "*POLYLINE"))) 0))
- (setq oRec (vlax-ename->vla-object rec))
- (defun _foreach (/ lst)
- (foreach pt (entget rec)
- (if (eq (car pt) 10)
- (setq lst (cons (cdr pt) lst))
- )
- )
- )
- (defun _lambda ()
- (vl-remove-if-not
- (function (lambda (x) (= 10 (car x))))
- (entget rec)
- )
- )
- (defun _vl ()
- (vlax-get oRec 'coordinates)
- )
- (bench '(_foreach _lambda _vl) '() 100000)
... 结果是:
- _$
- _FOREACH
- Elapsed: 5538
- Average: 0.0554
- _LAMBDA
- Elapsed: 4789
- Average: 0.0479
- _VL
- Elapsed: 2137
- Average: 0.0214
|