I think that to make a good test is necessary to start from the worse condition for all functions:
(defun LayerOnAndThawTest-ax (/ thawList LayerZero layName)
(setq thawList '("$XP*,*HIDDEN*" "$SDT*" "Defpoints"))
(command-s "_.layer" "_On" "*" "_t" "*" "")
...
)
(defun ALE_Layer_OnAndThawTest(n) ( / ChgLst LyrNam BitVal)
(setq ChgLst '((0 . "~0") (1 . "$XP*,*HIDDEN*,$SDT*,Defpoints")))
(command-s "_.layer" "_On" "*" "_t" "*" "")
...
)
(defun LayerOnAndThawTest-cmd (/ thawList)
(setq thawList (_listitems->string
'("$XP*,*HIDDEN*" "$SDT*" "Defpoints")
","
)
)
(command-s "_.layer" "_On" "*" "_t" "*" "_S" "0" "_Freeze" "*" "_On" thawList "_T" thawList "")
(princ)
)
(LAYERONANDTHAWTEST-CMD).......1060 / 4.22 <fastest>
(ALE_LAYER_ONANDTHAWTEST)......1935 / 2.31
(ALE_LAYER_ONANDTHAWTEST3).....3432 / 1.3
(LAYERONANDTHAWTEST-AX)........4477 / 1 <slowest>