Skip to content

EXIficient/exificient-for-javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exificient-for-javascript

EXI for JavaScript (Explorative) - How EXI can be used to represent JavaScript efficiently w.r.t.

  • Size and
  • Processing speed

Implementations:

Build Status

Abstract Syntax Tree (AST) for JavaScript

We re-use the syntax tree format as standardized by EStree project. See also

Sample

JavaScript

var dog = 6, cat = 7, pig = dog * cat;

EXI for JavaScript (visualized as XML)

<Program>
    <body>
        <array>
            <VariableDeclaration>
                <declarations>
                    <array>
                        <VariableDeclarator>
                            <id>
                                <Identifier>
                                    <name>dog</name>
                                </Identifier>
                            </id>
                            <init>
                                <Literal>
                                    <value>
                                        <integer>6</integer>
                                    </value>
                                </Literal>
                            </init>
                        </VariableDeclarator>
                    </array>
                </declarations>
                <kind>var</kind>
            </VariableDeclaration>
            <VariableDeclaration>
                <declarations>
                    <array>
                        <VariableDeclarator>
                            <id>
                                <Identifier>
                                    <name>cat</name>
                                </Identifier>
                            </id>
                            <init>
                                <Literal>
                                    <value>
                                        <integer>7</integer>
                                    </value>
                                </Literal>
                            </init>
                        </VariableDeclarator>
                    </array>
                </declarations>
                <kind>var</kind>
            </VariableDeclaration>
            <VariableDeclaration>
                <declarations>
                    <array>
                        <VariableDeclarator>
                            <id>
                                <Identifier>
                                    <name>pig</name>
                                </Identifier>
                            </id>
                            <init>
                                <BinaryExpression>
                                    <operator>*</operator>
                                    <left>
                                        <Identifier>
                                            <name>dog</name>
                                        </Identifier>
                                    </left>
                                    <right>
                                        <Identifier>
                                            <name>cat</name>
                                        </Identifier>
                                    </right>
                                </BinaryExpression>
                            </init>
                        </VariableDeclarator>
                    </array>
                </declarations>
                <kind>var</kind>
            </VariableDeclaration>
        </array>
    </body>
</Program>

Early Results

See test-data in https://github.com/EXIficient/exificient-for-javascript/tree/master/src/test/resources.

Compression

TestCase JavaScript [Size in Bytes] EXI 4 JS [Size in Bytes]
angular2.js 1182582 388994
angular2.min.js 635809 375410
animals.js 40 30
browserDetection.js 885 316
jquery.js 263767 72755
jquery.min.js 86355 58250
react.js 701412 200306
react.min.js 148805 101384
xCryptic.app.js 5611 2508

On average "EXI for JS" is about 50% of the original JavaScript filesize!

Compression Figure

About

EXI for JavaScript (Explorative)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages