Skip to content

Why reflection lookup on Java 8 is much slower than on Java 13? #6

@igabaydulin

Description

@igabaydulin
Benchmark                                                 Mode  Cnt    Score    Error  Units
c.g.i.r.j.b.compile.Instance.newInstance                  avgt    5    5.399 ±  2.618  ns/op
c.g.i.r.j.b.compile.PublicMethodDirectAccess.invoke       avgt    5    3.412 ±  1.776  ns/op
c.g.i.r.j.b.other.HashMapBenchmark.put                    avgt    5   59.235 ± 17.800  ns/op
c.g.i.r.j.b.other.JacksonBenchmark.jacksonMapping         avgt    5  262.843 ± 22.358  ns/op
c.g.i.r.j.b.runtime.PrivateMethodReflectionAccess.invoke  avgt    5    9.890 ±  6.709  ns/op
c.g.i.r.j.b.runtime.PrivateMethodReflectionAccess.lookup  avgt    5  413.902 ± 52.149  ns/op
c.g.i.r.j.b.runtime.PublicMethodReflectionAccess.invoke   avgt    5    9.881 ±  4.878  ns/op
c.g.i.r.j.b.runtime.PublicMethodReflectionAccess.lookup   avgt    5  412.168 ± 66.915  ns/op
c.g.i.r.j.b.runtime.ReflectionInstance.newInstance        avgt    5   46.380 ±  4.468  ns/op
Benchmark                                                 Mode  Cnt    Score    Error  Units
c.g.i.r.j.b.compile.Instance.newInstance                  avgt    5    5.618 ±  2.549  ns/op
c.g.i.r.j.b.compile.PublicMethodDirectAccess.invoke       avgt    5    3.682 ±  0.701  ns/op
c.g.i.r.j.b.other.HashMapBenchmark.put                    avgt    5   52.031 ± 13.063  ns/op
c.g.i.r.j.b.other.JacksonBenchmark.jacksonMapping         avgt    5  314.913 ± 20.882  ns/op
c.g.i.r.j.b.runtime.PrivateMethodReflectionAccess.invoke  avgt    5    7.161 ±  4.484  ns/op
c.g.i.r.j.b.runtime.PrivateMethodReflectionAccess.lookup  avgt    5   51.903 ±  9.042  ns/op
c.g.i.r.j.b.runtime.PublicMethodReflectionAccess.invoke   avgt    5    7.301 ±  4.643  ns/op
c.g.i.r.j.b.runtime.PublicMethodReflectionAccess.lookup   avgt    5   50.762 ±  4.371  ns/op
c.g.i.r.j.b.runtime.ReflectionInstance.newInstance        avgt    5   69.863 ± 18.715  ns/op

On local machine results are pretty the same no matter which Java version is used. Maybe default JVM args differ or some optimisations are not enabled for unknown reason yet :)

It would be interesting to solve it 🤓

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for newcomershelp wantedExtra attention is neededquestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions