Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maximum execution time for JavaScript

I know both ie and firefox have limits for javascript execution (Source 1, Source 2). Based on number of statements executed, I heard it was 5 million somewhere in IE and based on number of seconds in firefox: it's 10 seconds by default for my version.

The thing I don't get is what cases will go over these limits:

  1. I'm sure a giant loop will go over the limit for execution time

  2. But will an event hander go over the limit, if itself it's execution time is under the limit but if it occurs multiple times?

Example:

Lets say I have a timer on my page, that executes some javascript every 20 seconds. The execution time for the timer handler is 1 second. Does firefox and ie treat each call of the timer function seperatly, so it never goes over the limit, or is it that firefox/ie adds up the time of each call so after the handler finishes, so after 200 seconds on my site (with the timer called 10 times) an error occurs even though the timer handler itself is only 1 second long?

like image 845
Andrew Chang Avatar asked Jun 12 '10 20:06

Andrew Chang


People also ask

What is JavaScript Execution time?

Overview. Reducing JavaScript execution time, in general, refers to decreasing the amount of time spent parsing, compiling, and executing JavaScript files. By default, JavaScript executes on the main-thread and when this is happening, the browser cannot execute other tasks.

What is reduce JavaScript Execution time?

Reducing JS execution time means reducing the time spent by the browser to parse, compile and execute JS once downloaded. Parsing, compiling, and executing are the three steps you should manage to reduce the JS execution time.

Is JavaScript executed by browser?

JavaScript runs in every web browser, out of the box. A JavaScript application runs on every device, whereas a desktop or mobile application runs only on the application it is targeted to (Windows, Mac OSX, Linux, iPhone, Android). This allows you to write cross-platform apps in a really easy way.


1 Answers

The following article by Nicholas C. Zakas discusses how and when different browsers interrupt long running JavaScript code:

  • What determines that a script is long-running?

Breaking long processing code into small chunks and launching them with timers is in fact one way to get around this problem. The following Stack Overflow post suggests a method to tackle this:

  • Show javascript execution progress

On the other hand, web workers would be more suited for long running processing, since their execution happens in a separate process, and therefore does not block the UI thread:

  • Mozilla Dev Center: Using web workers
  • John Resig: Computing with JavaScript Web Workers
  • Nicholas C. Zakas: Experimenting with web workers

However web workers are not supported in Internet Explorer yet, and they would not have access to the DOM.

like image 66
Daniel Vassallo Avatar answered Nov 15 '22 20:11

Daniel Vassallo