<commit_before>![](https://raw.github.com/wiki/EsotericSoftware/reflectasm/images/logo.png)

Please use the [ReflectASM discussion group](http://groups.google.com/group/reflectasm-users) for support.

## Note

This is the revised version, some differences from `EsotericSoftware/reflectasm`:
* Supports `Java 8` only in order to remove the dependency of `asm-xxx.jar`
* New class `ClassAccess` as the base of `MethodAccess`/`FieldAccess`/`ConstructorAccess`
* Provides the interface to dump the dynamic class for investigation purpose
* Provides the caching options for performance purpose(default as enabled)
* Optimize some logics for performance purpose
* Auto data type conversion for invoking or construction
* Accuratly position the closest method for overloading  

## Overview

ReflectASM is a very small Java library that provides high performance reflection by using code generation. An access class is generated to set/get fields, call methods, or create a new instance. The access class uses bytecode rather than Java's reflection, so it is much faster. It can also access primitive fields via bytecode to avoid boxing.

## Performance

![Method-Call](http://chart.apis.google.com/chart?chtt=Method Call&chs=700x75&chd=t:68209342,195977655,1495574653&chds=0,1495574653&chxl=0:|Reflection|MethodAccess|Normal&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

![Field Set/Get](http://chart.apis.google.com/chart?chtt=Field Set/Get&chs=700x75&chd=t:84354523,499292218,6285216709&chds=0,6285216709&chxl=0:|Reflection|FieldAccess|Normal&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

![Constructor](http://chart.apis.google.com/chart?chtt=Constructor&chs=700x75&chd=t:4664189810,2077533665,2102928286&chds=0,4664189810&chxl=0:|ConstructorAccess|Normal|Reflection&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

The source code for these benchmarks is included in the project. The above charts were generated on Oracle's Java 7u3, server VM.
<commit_msg>update benchmark JVM version in `README.md`<commit_after>![](https://raw.github.com/wiki/EsotericSoftware/reflectasm/images/logo.png)

Please use the [ReflectASM discussion group](http://groups.google.com/group/reflectasm-users) for support.

## Note

This is the revised version, some differences from `EsotericSoftware/reflectasm`:
* Supports `Java 8` only in order to remove the dependency of `asm-xxx.jar`
* New class `ClassAccess` as the base of `MethodAccess`/`FieldAccess`/`ConstructorAccess`
* Provides the interface to dump the dynamic class for investigation purpose
* Provides the caching options for performance purpose(default as enabled)
* Optimize some logics for performance purpose
* Auto data type conversion for invoking or construction
* Accuratly position the closest method for overloading  

## Overview

ReflectASM is a very small Java library that provides high performance reflection by using code generation. An access class is generated to set/get fields, call methods, or create a new instance. The access class uses bytecode rather than Java's reflection, so it is much faster. It can also access primitive fields via bytecode to avoid boxing.

## Performance

![Method-Call](http://chart.apis.google.com/chart?chtt=Method Call&chs=700x75&chd=t:68209342,195977655,1495574653&chds=0,1495574653&chxl=0:|Reflection|MethodAccess|Normal&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

![Field Set/Get](http://chart.apis.google.com/chart?chtt=Field Set/Get&chs=700x75&chd=t:84354523,499292218,6285216709&chds=0,6285216709&chxl=0:|Reflection|FieldAccess|Normal&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

![Constructor](http://chart.apis.google.com/chart?chtt=Constructor&chs=700x75&chd=t:4664189810,2077533665,2102928286&chds=0,4664189810&chxl=0:|ConstructorAccess|Normal|Reflection&cht=bhg&chbh=10&chxt=y&chco=660000|660033|660066|660099|6600CC|6600FF|663300|663333|663366|663399|6633CC|6633FF|666600|666633|666666)

The source code for these benchmarks is included in the project. The above charts were generated on Oracle's Java u112 32Bit, server VM.

{'fraction_non_alphanumeric': 0.10788474424838061, 'fraction_numerical': 0.17489390216662945, 'mean_word_length': 8.213991769547325, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7668922', 'n_tokens_mistral': 1985, 'n_tokens_neox': 1508, 'n_words': 338}