Frodik
Frodik

Reputation: 15485

What effect has javascript obfuscation on speed on mobile browsers?

I want to ask if someone measured impact of some javascript obfuscators on the resulted code. I am aiming mobile users so the speed is cruicial. And I am especially trying to run 2 or 3 different obfuscators on same code in a row, which obfuscates the code very well, but I am afraid that it will have some speed impact.

Upvotes: 1

Views: 1310

Answers (5)

Stephen Chung
Stephen Chung

Reputation: 14605

Most JavaScript obfuscators only minifies and rename local variables, which is extremely easy to reverse-engineer with a beautifier.

The best combination I've found is the DojoToolkit and the Closure Compiler in Advanced Mode.

Closure in Advanced Mode makes JavaScript code almost impossible to reverse-engineer, even after passing through a beautifier. Once your JavaScript code is obfuscated beyond any recognition and any possibility to reverse-engineer, your HTML won't disclose much of your secrets.

This link for using the Dojo Toolkit with the Closure Compiler in Advanced Mode for mobile applications:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

The Closure Compiler in Advanced Mode actually makes JavaScript runs faster in mobile environments due to its industrial-scale optimizations. For example, in-lining of functions, virtualization of prototype methods, namespace folding, dead-code removal etc. will all make code run faster, so it is not only an obfuscator, it is an optimizing compiler as well.

My own benchmarks runs code on the iPad around 10-20% faster, and 30% faster on the Android. Memory usage is also reduced.

Upvotes: 1

Dave Ward
Dave Ward

Reputation: 60580

That depends on what you mean by obfuscation.

If you're referring to minification, using a tool like JSMin, then the effect is nil.

If you're talking about something like Packer, the eval process actually does have an impact on how long it takes for the code to execute. On a slow device, that impact can be significant.

Upvotes: 0

AlvaroGMJ
AlvaroGMJ

Reputation: 416

If the obfuscator is doing some encoding and calling eval, like some do, then there will be a performance penalty at script load time. After that is run, there should be no difference and, as stated before, it may speedup your code due to slower size.

Upvotes: 1

mah
mah

Reputation: 39827

Your question really needs an analysis on your own javascript in order to arrive at a useful answer.

Often though, obfuscation actually speeds up javascript since the file sizes are reduced (faster loading) and symbols get small names (less to compare against).

Upvotes: 1

hvgotcodes
hvgotcodes

Reputation: 120268

it shouldn't. Compiler/interpreters couldn't care less about what your symbols are, as long as they are correct.

Upvotes: 4

Related Questions