views:

580

answers:

4

I want to benchmark some Javascript code in the browser, but it may trigger Firefox's "Warning: Unresponsive script" popup. This allows the user to click "Stop script" in the event that the browser is caught in a runaway function. While the pop-up is displayed, the currently running function has been halted. This isn't ideal, so is there a way to run my benchmarks differently such that Firefox doesn't popup this warning and ruin my results?

+2  A: 

You have to break up long actions into smaller ones and perform them in turns. This will also allow a better progress indication.

http://www.sonofsofaman.com/hobbies/code/settimeout.asp

Nick Brooks
Can you elaborate? A simple example, maybe?
spoulson
Here's an example of using setTimeout to break up the running of the javascript: http://www.sonofsofaman.com/hobbies/code/settimeout.aspIf you're doing benchmarks, make sure that you allow the code to run long enough to make up for the timer resolution. You'll probably want to read this: http://ejohn.org/blog/accuracy-of-javascript-time/
Annie
+4  A: 

In firefox's address bar type about:config

You want to change dom.max_script_run_time to be large enough for your scripts to run.

tloach
Is he supposed to do that for every user of the page?
Oded
He's using it for benchmarking--I don't think there are other users.
Annie
+1  A: 

You can use the script from this question to break processing long lists into smaller chunks:

http://stackoverflow.com/questions/210821/#210994

Diodeus
+2  A: 

See in blog of Nicholas C. Zakas What determines that a script is long-running? (at 2009/01/05)

Speed up your JavaScript, Part 1 http://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/

there are the reasons and the ways how to avoid the dialog

zmila