Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

30% improvement in length #4

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

MatthiasHeinz
Copy link

I've managed to cut about 30% of the compiled output length by optimizing some of the characters stored in the map.

This improvement stacks with the pull request #3; dropping the total size from roughly 117k to about 64k.

Saves one character in the input, but does not effect the output.

Using a RegEx-escapable character (e.g. '{'), that does not need to be escaped like the backslash saves one character in the argument, but it does not effect the output, because the generated string would be '\\' prior to or '\{' after the change. Other possibilities, that work and are allowed according to the whitelisted charset would be: }[]()/+
Cutting down the string length for the letter 't' from 
54 characters: '[object Object]'[6] -> '({}+[])[+!![] + +!![] + +!![] + +!![] + +!![] + +!![]]'
to 14 characters: 'true'[0] -> '(!!{}+[])[+[]]'
Unified the way "0" is being expressed.
Cutting down the string length for the letter 'e' from 
38 characters: '[object Object]'[4] -> '({}+[])[+!![] + +!![] + +!![] + +!![]]'
to 32 characters: 'true'[3] -> '(!![]+[])[+!![] + +!![] + +!![]]'
Cutting down the string length for the letter 'n' from 
47 characters: 'Infinity'[4] -> '((+!![]/+[])+[])[+!![] + +!![] + +!![] + +!![]]'
to 23 characters: 'Infinity'[1] -> '((+!![]/+[])+[])[+!![]]'
Cutting down the string length for the letter 'm' from 
1233 characters: (22).toString(23) -> '(+!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![])[(!![]+[])[+[]]+({}+[])[+!![]]+([]+([]+[])[({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+({}+[])[+!![]]+((+!![]/+[])+[])[+!![]]+(![]+[])[+!![] + +!![] + +!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(!![]+[])[+!![] + +!![]]+({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+(!![]+[])[+[]]+({}+[])[+!![]]+(!![]+[])[+!![]]])[+!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+((+!![]/+[])+[])[+!![] + +!![] + +!![]]+((+!![]/+[])+[])[+!![]]+([]+([]+[])[({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+({}+[])[+!![]]+((+!![]/+[])+[])[+!![]]+(![]+[])[+!![] + +!![] + +!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(!![]+[])[+!![] + +!![]]+({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+(!![]+[])[+[]]+({}+[])[+!![]]+(!![]+[])[+!![]]])[+!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![]]](+!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![])'
to 367 characters: ([]+(0)['constructor'])[11] -> '([]+(+[])[({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+({}+[])[+!![]]+((+!![]/+[])+[])[+!![]]+(![]+[])[+!![] + +!![] + +!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(!![]+[])[+!![] + +!![]]+({}+[])[+!![] + +!![] + +!![] + +!![] + +!![]]+(!![]+[])[+[]]+({}+[])[+!![]]+(!![]+[])[+!![]]])[+!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![] + +!![]]'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant