Code Monkey home page Code Monkey logo

exip-eval's Introduction

This project is a public release of the evaluation of the dedicated EXI grammar
generator implemented as part of the EXIP library. The grammar generator accepts
EXI encoded XML Schema definitions as an input
A set of 5 XML schema documents (available in the Schemas folder) are used for decoding 15 instances
(XML examples that conform to the schemas and available in XML-Instances folder; 3 instances per
each schema document) by 3 different EXI processors - EXIficient v0.9.1 Java,
OpenEXI v1.0238.0 Java, and EXIP v0.5.3 C.
The EXI encoded XML instance documents are located in EXI-Output.
The XML schema documents are: netconf.xsd, SenML.xsd, sep.xsd, OPC-UA-Types.xsd,
and XMLSchema.xsd. All of them are accessed from the local hard-drive,
including the imported XML schema files, so there were no dependencies on the
network performance.

The Tests folder contains the 3 implementations and 2 bash scripts for compiling
the sources of the 3 EXI processors (compileAll.sh) and running the evaluation (run-eval.sh).

The run-eval.sh script creates a CSV file called evaluation.csv which contains the
times to generate the EXI grammars dynamically for each processor and for each
XML Schema and the times to process the instances. All times are in nanoseconds.
Each row is one run of the evaluation for one instance.
The number of runs can be set in run-eval.sh by changing the value of NUMBER_OF_RUNS variable.

The compileAll.sh sets -O0 flag to gcc compiler (i.e. no compile time optimizations).
For compiling exip with optimizations (i.e. -O3 flag) use compileAllOptimize.sh

By default run-eval.sh executes OpenEXI and EXIficient tests in a fresh JVM and thus
the JVM runs the tests with limited run-time optimizations (such as JIT) as the JVM
cannot gain enough statistics for performing code optimizations.

When passing optimize parameter to run-eval.sh script (i.e. ./run-eval.sh optimize)
Each decoding test in OpenEXI and EXIficient is executed 5 times before the
timed decoding is performed thus the JVM has enough statistic to perform
run-time optimizations on the code.

For comparing in a optimization scenario use compileAllOptimize.sh to compile
and ./run-eval.sh optimize to run the tests as opposed to compileAll.sh and run-eval.sh.

exip-eval's People

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.