website optimization

WebSiteOptimization.com

Higher traffic and speed guaranteed.™

   
   
Home Sitemap Publications Services About Contact
Newsletter:  

website optimization secrets book no critter yet cover

home > speed > 10

Chapter 10: Optimizing JavaScript for Execution Speed

JavaScript can benefit from many of the same speed optimization techniques that are used in other languages, like C and Java. Algorithms and data structures, caching frequently used values, for loop unrolling and hoisting, removing tail recursion, and strength reduction techniques all have a place in your JavaScript optimization toolbox. However, how you interact with the Document Object Model (DOM) in large part determines how efficiently your code executes. After all else fails, you can tune your JavaScript locally by tweaking for loops, using profilers, and refactoring. Here are some excerpts from WebReference.com.

Live Code Tests

Code Listings

Summary

Further Reading

Books

The Art of Computer Programming series
by Donald Knuth (Addison-Wesley, 1998).
Code Complete: A Practical Handbook of Software Construction
by Steve C. McConnell (Microsoft Press, 1993), especially Chapters 28 and 29.
The Practice of Programming
by Brian W. Kernighan and Rob Pike (Addison-Wesley, 1999). Describes best programming practices, including Chapter 7 on performance.
The Pragmatic Programmer: From Journeyman to Master
by Andrew Hunt and David Thomas (Boston, MA: Addison-Wesley, 1999).
Programming Pearls, 2nd ed.
by Jon Bentley (Addison-Wesley, 1999). See Column 10: "Squeezing Space."
More Programming Pearls: Confessions of a Coder
by Jon Bentley (Addison-Wesley, 1988). These two books include many examples of code tuning and recap the 27 code-tuning rules in his out-of-print classic, Writing Efficient Programs.
Refactoring: Improving the Design of Existing Code
by Martin Fowler (Boston, MA: Addison-Wesley, 1999). See also Refactoring.com.

Articles

"An Empirical Study of FORTRAN Programs"
Donald E. Knuth, Software - Practice and Experience 1, no. 2 (1971): 105-133. Knuth analyzed programs found by sifting through wastebaskets and directories on the computer center's machines.
"Improving Software Productivity"
Barry W. Boehm, "Improving Software Productivity," IEEE Computer 20, no. 9 (1987): 43-57.
"Understanding and Controlling Software Costs"
Barry W. Boehm and Philip N. Papaccio, IEEE Transactions on Software Engineering 14, no. 10 (1988): 1462-1477.

JavaScript performance and tuning tips

JavaScript for and while loop benchmarks
Shows times for various loop optimizations by Andrea Giammarchi. See also this post JavaScript benchmark for while and for loop.
JavaScript Performance Issues
According to Geoffrey Fox of Syracuse University, JavaScript is about 5,000 times slower than C, 100 times slower than interpreted Java, and 10 times slower than Perl.
JavaScript speed optimization tests
By Jeff Greenburg
Refactoring.com Catalog
Martin Fowler's catalog of refactoring techniques
Refactorings from Bentley's Writing Efficient Programs
William Wake
Rules for code tuning
By Jon Bentley

JavaScript profilers

The Venkman JavaScript Profiler
From Mozilla.org
Documentation for the Venkman JavaScript Profiler
By Robert Ginda

JavaScript obfuscators

Blue Clam
A Java-based JavaScript obfuscator from Solmar Solutions. Supports recursive directory tree parsing, a user-defined keyword dictionary, variable length obfuscated keyword support, extended file types (such as .js, .jsp, and .asp) and a graphical environment.
JavaScript Scrambler
JMyth
Quek
A browser-based surf/animate/chat application written in JavaScript from Q42 (employs home-grown obfuscator). By Lon Boonen.
Tom Duff on Duff's Device

Self-Extracting Archives

See Chapter 9, "Optimizing JavaScript for Download Speed"

General

ECMAScript Language Specification, Standard ECMA-262
The official JavaScript spec.
JavaScript.com
The definitive JavaScript resource. News, views, and how-tos.
JavaScript-Games.org
Games and tutorials from Scott Porter (now offline).
JavaScript Resources
DMOZ/Google Open Directory.
WebReference.com
Web developer site founded by the author with DHTML Lab and Doc JavaScript.

Flash Optimization

Flasm Optimization Tips
The Prototype Site
Substitute optimize functions for slower Flash Actionscript functions