Note that using a sort to find the maximum is rather an expensive operation - you spend time and memory sorting all the elements, whereas all you want to do is find the largest.
With 1 million entries in the list, the sort takes 4.6 seconds for me (on my laptop), and with the copy too, it uses 12 million bytes (that's all from the copy). The following:
(defun abComputeMax (l)
(let ((mx (car l)))
(foreach val (cdr l) (when (greaterp val mx) (setq mx val)))
takes 0.16 seconds, and 140 bytes. Yes, I know, it's not exactly a massive amount of time - but even so, it adds up.