Skip to content

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.

1 participant