The program: (you can run it in the REPL; use C-S-y to paste from OS clipboard):
SS-USER> (defun sum (n) (let rec ((n n) (r 0)) (if (zerop n) r (rec (1- n) (+ r n)))))
SS-USER> (time (sum 100000))
The time spent will be displayed in the ss-output buffer.
Firefox: 6516ms Chrome: 138ms
Parsecs away... :-(
However:
(time (without-interrupts (sum 100000)))
Firefox: 376ms Chrome: 135ms
Still a lot worse than Chrome, but quite a big difference.
without-interrupts ensures that its body runs continuously. Normally we run 200 instructions of each thread, until we get to 50ms, then reschedule for later with setTimeout(0). So that's probably the reason why Chrome seems to do much better—maybe setTimeout is very expensive on FF.