All Projects → EXIficient → exificient

EXIficient / exificient

Licence: MIT license
Java Implementation of EXI

Programming Languages

java
68154 projects - #9 most used programming language
XSLT
1337 projects
HTML
75241 projects

Projects that are alternatives of or similar to exificient

Slimmable networks
Slimmable Networks, AutoSlim, and Beyond, ICLR 2019, and ICCV 2019
Stars: ✭ 708 (+1344.9%)
Mutual labels:  efficient
Efficientnet
Implementation of EfficientNet model. Keras and TensorFlow Keras.
Stars: ✭ 1,920 (+3818.37%)
Mutual labels:  efficient
Selecsls Pytorch
Reference ImageNet implementation of SelecSLS CNN architecture proposed in the SIGGRAPH 2020 paper "XNect: Real-time Multi-Person 3D Motion Capture with a Single RGB Camera". The repository also includes code for pruning the model based on implicit sparsity emerging from adaptive gradient descent methods, as detailed in the CVPR 2019 paper "On implicit filter level sparsity in Convolutional Neural Networks".
Stars: ✭ 251 (+412.24%)
Mutual labels:  efficient
Eminim
JSON serialization framework for Nim, works from a Stream directly to any type and back. Depends only on stdlib.
Stars: ✭ 32 (-34.69%)
Mutual labels:  efficient
Borer
Efficient CBOR and JSON (de)serialization in Scala
Stars: ✭ 131 (+167.35%)
Mutual labels:  efficient
Nfancurve
A small and lightweight POSIX script for using a custom fan curve in Linux for those with an Nvidia GPU.
Stars: ✭ 180 (+267.35%)
Mutual labels:  efficient
Elegantrl
Lightweight, efficient and stable implementations of deep reinforcement learning algorithms using PyTorch.
Stars: ✭ 575 (+1073.47%)
Mutual labels:  efficient
neutron-language
A simple, extensible and efficient programming language based on C and Python
Stars: ✭ 32 (-34.69%)
Mutual labels:  efficient
Nim
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
Stars: ✭ 12,270 (+24940.82%)
Mutual labels:  efficient
Flutter commonapp
打造一款通用的AppUI结构,包括登录、注册等通用 UI 界面及各工具类和公共部分。
Stars: ✭ 227 (+363.27%)
Mutual labels:  efficient
Retc
An application used to convert razer effects to multiple output sdks.
Stars: ✭ 54 (+10.2%)
Mutual labels:  efficient
Stm32 Dma Uart
Efficient DMA timeout mechanism for peripheral DMA configured in circular mode demonstrated on a STM32 microcontroller.
Stars: ✭ 111 (+126.53%)
Mutual labels:  efficient
S2v
ICLR 2018 Quick-Thought vectors
Stars: ✭ 191 (+289.8%)
Mutual labels:  efficient
Dua Cli
View disk space usage and delete unwanted data, fast.
Stars: ✭ 744 (+1418.37%)
Mutual labels:  efficient
PyGLM
Fast OpenGL Mathematics (GLM) for Python
Stars: ✭ 167 (+240.82%)
Mutual labels:  efficient
Noahv
An efficient front-end application framework based on vue.js
Stars: ✭ 593 (+1110.2%)
Mutual labels:  efficient
Pyeco
python implementation of efficient convolution operators for tracking
Stars: ✭ 150 (+206.12%)
Mutual labels:  efficient
jazzle
An Innovative, Fast Transpiler for ECMAScript 2015 and later
Stars: ✭ 65 (+32.65%)
Mutual labels:  efficient
JSON-For-Mirc
JSON parser for mIRC
Stars: ✭ 19 (-61.22%)
Mutual labels:  efficient
Amber
A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance.
Stars: ✭ 2,345 (+4685.71%)
Mutual labels:  efficient

EXIficient

EXIficient - open source implementation of the W3C Efficient XML Interchange (EXI) format specification.

The EXI format is a very compact representation for the Extensible Markup Language (XML) Information Set that is intended to simultaneously optimize performance and the utilization of computational resources.

Java CI

API support

  • SAX 1
  • SAX 2
  • DOM
  • StAX
  • XmlPull

Apache Maven Dependency

<dependency>
   <groupId>com.siemens.ct.exi</groupId>
   <artifactId>exificient</artifactId>
   <version>1.0.4</version>
</dependency>

Requirements

  • Java 1.5 or higher
  • Xerces2 Java Parser

Library - Code Sample

/*
 *  Setup EXIFactory as required
 */
EXIFactory exiFactory = DefaultEXIFactory.newInstance();
// e.g., add additional settings beyond the default values
// exiFactory.setGrammars(GrammarFactory.newInstance().createGrammars("foo.xsd")); // use XML schema
// exiFactory.setCodingMode(CodingMode.COMPRESSION); // use deflate compression for larger XML files

/*
 *  encode XML to EXI
 */
String fileEXI = "foo.xml.exi"; // EXI output
OutputStream osEXI = new FileOutputStream(fileEXI);
EXIResult exiResult = new EXIResult(exiFactory);
exiResult.setOutputStream(osEXI);
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler( exiResult.getHandler() );
xmlReader.parse("foo.xml"); // parse XML input
osEXI.close();

/*
 *  decode EXI to XML
 */
String fileXML = "foo.xml.exi.xml"; // XML output again
Result result = new StreamResult(fileXML);
InputSource is = new InputSource(fileEXI);
SAXSource exiSource = new EXISource(exiFactory);
exiSource.setInputSource(is);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(exiSource, result);

Command-line Interface

EXIficient also provides a command-line interface.

/* Class: com.siemens.ct.exi.cmd.EXIficientCMD */

      

######################################################################### 
###   EXIficient                                                      ### 
###   Command-Shell Options                                           ### 
######################################################################### 

 -h                               /* shows help */ 

 -encode 
 -decode 

 -i  
 -o  

 -schema  
 -xsdSchema                       /* XML schema datatypes only */ 
 -noSchema                        /* default */ 

 -strict 
 -preservePrefixes 
 -preserveComments 
 -preserveLexicalValues 
 -preservePIs                     /* processing instructions */ 
 -preserveDTDs                    /* DTDs & entity references */ 

 -bytePacked 
 -preCompression 
 -compression 

 -blockSize  
 -valueMaxLength  
 -valuePartitionCapacity  

 -noLocalValuePartitions          /* EXI Profile parameters */ 
 -maximumNumberOfBuiltInProductions  
 -maximumNumberOfBuiltInElementGrammars  
 
 -includeOptions 
 -includeCookie 
 -includeSchemaId 
 -includeSchemaLocation 
 -includeInsignificantXsiNil 
 -includeProfileValues 
 -retainEntityReference
 -fragment 
 -selfContained <{urn:foo}elWithNS,elDefNS>
 -datatypeRepresentationMap  

# Examples
 -encode -schema notebook.xsd -i notebook.xml
 -decode -schema notebook.xsd -i notebook.xml.exi -o notebookDec.xml

EXIFactory Settings

Note: in general all options are set in a way that a small EXI stream is produced. However for larger XML files (e.g., COMPRESSION) or desired fidelity options (e.g., preserver comments) different settings might be chosen.

General Information Default Hint
blockSize Specifies the block size used for EXI compression 1,000,000 The default blockSize is intentionally large but can be reduced
valueMaxLength Specifies the total capacity of value partitions in a string table unbounded Reducing the number reduces the possible required memory usage
valuePartitionCapacity Specifies the total capacity of value partitions in a string table unbounded Often larger strings (> 16 characters) are unlikely to be a string table hit. Hence setting a lower value may reduce memory usage and speed up processing for no string table hits
com.siemens.ct.exi.core.FidelityOptions
Option Information Default
FEATURE_COMMENT Comments are preserved false
FEATURE_PI Processing Instructions are preserved false
FEATURE_DTD DTDs and Entity References are preserved false
FEATURE_PREFIX Namespace Prefixes are preserved false
FEATURE_LEXICAL_VALUE Lexical form of values is be preserved (e.g., float 1.00 vs 1) false
com.siemens.ct.exi.core.CodingMode Information (default is BIT_PACKED) Hint
BIT_PACKED Alignment option value bit-packed indicates that the the event codes and associated content are packed in bits without any paddings in-between Small files
BYTE_PACKED Alignment option value byte-alignment indicates that the event codes and associated content are aligned on byte boundaries Small files
PRE_COMPRESSION Alignment option value pre-compression alignment indicates that all steps involved in compression are to be done with the exception of the final step of applying the DEFLATE algorithm Large Files (e.g., compression built-in in transport)
COMPRESSION The compression option is used to increase compactness using additional computational resources (DEFLATE algorithm) Large Files
com.siemens.ct.exi.core.EncodingOptions Information Default Hint
INCLUDE_COOKIE EXI Cookie, which is a four byte field that serves to indicate an EXI stream false Useful if stream can be of any other type than EXI
INCLUDE_OPTIONS EXI Options, which provides a way to specify the options used to encode the body of the EXI stream. false Useful if options may vary or are unknown to recipient
INCLUDE_SCHEMA_ID Identify the schema information, if any, used to encode the body false Useful if schema information are unknwon to recipient
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].