Skip to content

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

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 🤓

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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