Just a little faster
(defun ALE_GroupByKey2 (lst / TKey OKey RKey keys tmpL OutLst)
(setq TKey (strcat "#" (caar lst)) keys (list TKey))
(set (read TKey) (list (caar lst) (cdar lst)))
(foreach itm (cdr lst)
(setq OKey (car itm) tmpL (cdr itm) TKey (strcat "#" OKey) RKey (read TKey))
(if (vl-position TKey keys)
(set RKey (vl-list* OKey tmpL (cdr (eval RKey))))
(progn
(set RKey (list OKey tmpL))
(setq keys (cons TKey keys))
)
)
)
(foreach itm keys
(setq RKey (read itm) OutLst (cons (eval RKey) OutLst))
(set RKey nil)
)
OutLst
)
Benchmark.lsp | © 2005 Michael Puckett | All Rights Reserved
Elapsed milliseconds / relative speed for 1 iteration(s):
(ALE_GROUPBYKEY2 TEST1)......2547 / 1.05 <fastest>
(GROUPBYKEY-FOOLS TEST1).....2672 / 1 <slowest>