Sorry for the late response - missed this for a while.
That's still much more slow than not doing it - slightly modifying your example,:
(progn
(setq start (current-time))
(let ((row 0) (log (time-add (current-time) '(0 1 0 0))))
(while (< row 6543210)
(setq row (1+ row))
(when (time-less-p log (current-time))
(setq log (time-add (current-time) '(0 1 0 0)))
(message "row %d" row))))
(setq end (current-time))
(print (time-subtract end start)))
prints (0 43 386499 0) on my computer.
Removing the when clause:
(progn
(setq start (current-time))
(let ((row 0) (log (time-add (current-time) '(0 1 0 0))))
(while (< row 6543210)
(setq row (1+ row))))
(setq end (current-time))
(print (time-subtract end start)))
Results in:
(0 1 277641 0)
So adding the logging here slows it down by about 43x - It doesn't seem worth it.