PROTON-1708 Optimizations for the EncoderImpl and DecoderImpl

Provides several performance enhancements for the AMQP codec EncoderImpl
and DecoderImpl classes.

* Reduce instanceof and other type checks fro known types or by looking
ahead in the working buffer
* Reduce the number of throw away objects created during encode and
decode phase such as dynamic type constructor and char decoders etc.
* Provide fast write paths for both primitive types and known Described
types that are most often used
* Provide fast write path for most primitive write operations and for
Described types that are most often used
* Ensure the hot path for most read and write operations can be inlined
for the most common types. 
* Adds some look ahead methods for users of the decoder that allow for
skipping types that aren't needed 
* Allow Map types to be given fixed Type handlers for the Map keys for
those AMQP Map types whose Key types are specified to avoid the overhead
of looking them up on each Key read / write. 
61 files changed
tree: e0c31fbcacad89fb59007772910c0eee87e33e2e
  1. .gitattributes
  2. .gitignore
  3. .mailmap
  4. .travis.yml
  5. LICENSE
  6. NOTICE
  7. README.md
  8. apache-qpid-proton-j/
  9. appveyor.yml
  10. examples/
  11. pom.xml
  12. proton-j/
  13. tests/
README.md

Apache Qpid Proton-J

Linux Build Status Windows Build Status

Qpid Proton-J is a high-performance, lightweight messaging library. It can be used in the widest range of messaging applications, including brokers, client libraries, routers, bridges, proxies, and more.

Please see http://qpid.apache.org/proton for more information.