Does minified JavaScript code improve performance?

Javascript

Javascript Problem Overview


I'm making an AIR application (so the download time doesn't have a huge impact). Does combining and minifing all the JavaScript files affect the performance? How would obfuscating affect the performance?

Javascript Solutions


Solution 1 - Javascript

Minifying improves performance for your page overall by decreasing the load time (even if only slightly).

Neither minifying nor obfuscating alter the execution time by any perceivable amount for the vast majority of JavaScript code out there.

I do recommend minifying for those reasons and more. Minifying multiple scripts together (like jQuery and its plugins) can yield even greater savings.

As pointed out, on constrained devices and/or with very large codebases minifying could yield a noticeable result.

Solution 2 - Javascript

Minification

Minification does improve performance for two reasons:

  • Reduced file-size (because it removes comments and unnecessary white spaces), so your script loads faster. Even if it is embedded into the <head>.

  • It is parsed faster, since comments and white spaces don't have to be explicitly ignored (since they're not there).

Combining

I've written quite a few HTML/JavaScript AIR applications, and from personal experience, combining files won't make a difference. In fact, it's good practice to separate the script based on certain criteria (classes, global functions, SQL functions, etc.). It helps keep them organised when the project becomes too big.

Obfuscation

Obfuscating is usually a combination of minification and renaming variables. It involves using eval to blow up the code again. This reduces performance for obvious reasons, but it depends on the size of your code.

I'd suggest running tests to understand this best for your specific situation.

Solution 3 - Javascript

Everyone here already talked about minifying, but nobody talked about the second part of your question - combining. This will definitely improve performance, probably even more than minifying.

Multiple files require multiple HTTP requests, so when you put them all into one file, only one request is needed. This is important for two reasons:

  • each individual HTTP request may take longer to load for various routing reasons, and one file will potentially delay your whole application.
  • browsers and other clients have a maximum limit of files they are allowed to download concurrently from a single domain. Depending on the number of files in your application, this may mean the client queuing them up, thus making the load even longer.

Also, besides minifying and combining, you have to absolutely make sure you have some sort of server-side compression enabled. This can save you 90% or even more in the amount of bytes transferred, depending on the files.

You can read more about compression (gzip, deflate) in How to make your site lightning fast by compressing (deflate/gzip) your HTML, JavaScript, CSS, XML, etc. in Apache.

Solution 4 - Javascript

Minification does not improve the speed at which JavaScript executes at runtime, which I believe it what you're really interested in. In fact, if you use Packer's Base64 compression, it's actually slower on initial load.

Minification will reduce the size of the JavaScript though, making your application's download size smaller.

Solution 5 - Javascript

Minifying strips out all comments, superfluous white space and shortens variable names. It thus reduces download time for your JavaScript files as they are (usually) a lot smaller in filesize. So, yes it does improve performance.

The obfuscation shouldn't adversely affect performance.

The article Best Practices for Speeding Up Your Web Site talks about minifying.

Solution 6 - Javascript

According to this page:

Minification in JavaScript is the process of removing all characters that are not necessary from the JavaScript source code. That is why it is called “minification” – because all of the data that is not necessary to the functioning of the JavaScript is removed from the source code, and therefore the JavaScript is “minimized”. Even though these characters are removed from the JavaScript source code, the functionality of the JavaScript code does not change at all.

So, your JavaScript code will behave exactly the same even after it goes through the minification process. Code that has gone through the minification process is also known as “minified” code

What are the benefits and advantages of JavaScript minification

The main purpose of JavaScript minification is to speed up the downloading or transfer of the JavaScript code from the server hosting the website’s JavaScript. The reason that minification makes downloads go faster is because it reduces the amount of data (in the minified JavaScript file) that needs to be downloaded. Less data means that the user’s browser spends less time processing that data, which is why time is saved. So, we can say that minification is performed on JavaScript source code because it is essentially a performance enhancement – and it allows websites that use minified JavaScript to load faster.

Solution 7 - Javascript

I'd like to post this as a separate answer as it somewhat contrasts the accepted one:

Yes, it does make a performance difference as it reduces parsing time - and that's often the critical thing. For me, it was even just simply linear in the size and I could get it from 12 seconds to 4 seconds parse time by minifying from 3 MB to 1 MB.

It's not a big application either. It just has a couple of reasonable dependencies.

So the moral of the story here is: Yes, minifying is important for performance - and not because of bandwidth, but because of parsing.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionbrian14708View Question on Stackoverflow
Solution 1 - JavascriptGabriel HurleyView Answer on Stackoverflow
Solution 2 - JavascriptadityaView Answer on Stackoverflow
Solution 3 - JavascriptArtem RussakovskiiView Answer on Stackoverflow
Solution 4 - JavascriptDave WardView Answer on Stackoverflow
Solution 5 - JavascriptsethView Answer on Stackoverflow
Solution 6 - JavascriptSooraj JoseView Answer on Stackoverflow
Solution 7 - JavascriptJohnView Answer on Stackoverflow