I calculated the time taken for intersection of selection sets with two functions :-
1.) (setq ss (ACET-SS-INTERSECTION ss1 ss2))
2.) (setq ss (kdub:ssintersect ss1 ss2))
and found stark contrast in the time taken.
My code :
(defun c:test ()
(setq ss1 (ssget "_:L"))
(setq ss2 (ssget "_:L"))
(setq Start (getvar "Millisecs"))
(repeat 250 (setq ss (ACET-SS-INTERSECTION ss1 ss2)))
(setq End (getvar "Millisecs"))
(setq yu (- End Start))
(setq yu (/ yu 1000.00))
(princ "\nTime Taken to Run in ACET Method : ")
(princ yu)
(princ " seconds \n")
(setq Start (getvar "Millisecs"))
(repeat 250 (setq ss (kdub:ssintersect ss1 ss2)))
(setq End (getvar "Millisecs"))
(setq yu (- End Start))
(setq yu (/ yu 1000.00))
(princ "\nTime Taken to Run in KDUB Method : ")
(princ yu)
(princ " seconds \n")
(princ)
)
(defun kdub:ssintersect (ss1 ss2 / ss l1 l2)
(setq ss (ssadd))
(cond ((and ss1 ss2)
(setq l1 (kdub:ss->entlist ss1)
l2 (kdub:ss->entlist ss2)
)
(foreach x (vl-remove-if-not '(lambda (x) (member x l2)) l1)
(ssadd x ss)
)
)
(t (setq ss nil))
)
ss
)
(defun kdub:ss->entlist (ss / i returnval)
(if (and ss (< 0 (sslength ss)))
(setq returnval (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
)
returnval
)
Results :
Time Taken to Run in ACET Method : 2.792 seconds
Time Taken to Run in KDUB Method : 293.407 seconds
Why is so much difference in time taken ? Or, why is ACET function so fast ?
Also, my other query, are all ACET functions so fast than our normal routines ? If yes, then why ?