JavaScript Performance tips
Excerpted from "Chapter 7: Writing Efficient JavaScript" of the book "Even Faster Websites":
- Performance .. is not just about how long it takes for the page to load, but also about how it responds as it’s being used.
- Out-of-scope variables take longer to access than local variables.
- A very common mistake that leads to performance issues is to omit the var keyword when assigning a variable’s value for the first time.
- If an array item or object property is used more than once, store it in a local variable to speed up access to the value.
- Generally speaking, interacting with DOM objects is always more expensive than interacting with non-DOM objects.
- The if statement is best used with a small number of discrete values or a range of values; the switch statement is best used when there are between 3 and 10 discrete values to test for; array lookup is most efficient for a larger number of discrete values.
- To make a loop the most efficient, reverse the order in which you process the items so that the control condition compares the iterator to zero.
- Trimming strings may be expensive, depending on the size of the string.
- Steven Levithan's optimized string trimming function:
function trim(text){
text = text.replace(/^\s+/, "");
for (var i = text.length - 1; i >= 0; i--) {
if (/\S/.test(text.charAt(i))) {
text = text.substring(0, i + 1);
break;
}
}
return text;
} - Array processing is one of the most frequent causes of long-running scripts.
- Generally speaking, no single continuous script execution should take longer than 100 milliseconds...
- Because JavaScript is a single-threaded language, only one script can be run at a time per window or tab.
- Exactly what causes the browser to display the long-running script dialog varies depending on the vendor:
- Internet Explorer displays it when 5 million (by default) statements have been executed.
- Firefox shows it when a script takes longer than 10 seconds (default).
- Safari displays it when the execution time exceeds default timeout of five seconds
- Chrome (as of version 1.0) has no set limit on how long JavaScript is allowed to run. The process will crash when it has run out of memory.
- Opera is the only browser that doesn’t protect against long-running scripts. Scripts are allowed to continue until execution is complete
Comments
Post a Comment