ASM Performance Benchmarks
Each chart shows either the number of "operations" per second that can be performed by several versions of ASM and other libraries (the larger the better), or the number of memory bytes used by one operation (the smaller the better). The definition of an "operation" depends on the benchmark, and is given below for each benchmark. The "few dozen classes" mentioned below are the same for all benchmarks.
This page is generated automatically from the results of the JMH ASM benchmarks.
AdapterBenchmark.getClassInfo
One operation = create a ClassReader and call getAccess(), getClassName(), getSuperName(), and getInterfaces() on it, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmark.getClassObjectModel
One operation = create a ClassReader and a ClassNode from it, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmark.readAndWriteWithComputeFrames
One operation = create a ClassReader and make a ClassWriter with the COMPUTE_FRAMES option visit and serialize it, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmark.readAndWriteWithComputeMaxs
One operation = create a ClassReader and make a ClassWriter with the COMPUTE_MAXS option visit and serialize it (or the equivalent for the other libraries), for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
- aspectJBcel
- bcel
- serp
AdapterBenchmark.readAndWriteWithCopyPool
One operation = create a ClassReader and make a ClassWriter with the "copy constant pool" optimization visit and serialize it, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmark.readAndWriteWithObjectModel
One operation = create a ClassReader and make a ClassWriter visit and serialize it, via a ClassNode, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmark.readAndWrite
One operation = create a ClassReader and make a ClassWriter visit and serialize it (or the equivalent for the other libraries), for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
- aspectJBcel
- bcel
- javassist
- serp
AdapterBenchmark.read
One operation = create a ClassReader and make an empty visitor visit it, for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmarkJava8.getClassInfo
One operation = create a ClassReader and call getAccess(), getClassName(), getSuperName(), and getInterfaces() on it, for 36 classes using Java 8 features (including invokedynamic instructions).
0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmarkJava8.readAndWriteWithCopyPool
One operation = create a ClassReader and make a ClassWriter with the "copy constant pool" optimization visit and serialize it, for 36 classes using Java 8 features (including invokedynamic instructions).
0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmarkJava8.readAndWrite
One operation = create a ClassReader and make a ClassWriter visit and serialize it (or the equivalent for the other libraries), for 36 classes using Java 8 features (including invokedynamic instructions).
0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
AdapterBenchmarkJava8.read
One operation = create a ClassReader and make an empty visitor visit it, for 36 classes using Java 8 features (including invokedynamic instructions).
0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
GeneratorBenchmark
One operation = generate a HelloWorld class in byte array form.
0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
- aspectJBcel
- bcel
- cojen
- csgBytecode
- gnuByteCode
- jclassLib
- jiapi
- mozillaClassFile
MemoryBenchmark.newClassNode
One operation = create, populate and store a ClassNode for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent
MemoryBenchmark.newClass
One operation = create, populate and store a ClassWriter for a few dozen classes.
0
- asm4_0
- asm5_0
- asm6_0
- asm7_0
- asm8_0
- asm9_0
- asmCurrent