The /echo command is still running. mIRC is single threaded so if the while loop is large enough it will freeze the UI and everything else while it does the loop.

Using /echo during a while loop slows it down if its being printed into a window. It will drastically slow down if its being printed in the active window.

After the while loop is done you can scroll up the window and see everything.

Code
; No Echo.
//var %a $ctime | var %x 100000 | while (%x) { dec %x } | echo -ag Time: $calc($ctime - %a) seconds.
Time: 1 seconds.

; Echo into status window while looking at another window.
//var %a $ctime | var %x 100000 | while (%x) { echo -sg %x | dec %x } | echo -ag Time: $calc($ctime - %a) seconds.
Time: 8 seconds.

; Echo into active window.
//var %a $ctime | var %x 100000 | while (%x) { echo -ag %x | dec %x } | echo -ag Time: $calc($ctime - %a) seconds.
Time: 127 seconds.