OpenWebBeans
  1. OpenWebBeans
  2. OWB-639

[perf] InjectionResolver.getBeanCacheKey creates many StringBuilder instances

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.1.4
    • Fix Version/s: 1.1.4
    • Component/s: Core
    • Labels:
      None
    • Environment:
      OWB trunk

      Description

      InjectionResolver.getBeanCacheKey(Type, String, Annotation...) creates:

      1) calls java.lang.reflect.Type.toString() -> java.lang.Class.toString() : -> first StringBuilder
      2) StringBuilder cacheKey = new StringBuilder() -> second StringBuilder
      3) java.lang.annotation.Annotation.toString() -> many annotation types (for example javax.enterprise.util.AnnotationLiteral.toString())) create toString() output with another StringBuilder() -> third StringBuilder

      Questions:
      toString() methods are normally non-semantics and produce a debug String output. OWB InjectionResolver.getBeanCacheKey uses them to create a key: but are toString() really suitable for this? What if two different annotations produce same toString output? Can be a.getClass().getName() used for 3) ?

      Can be a small class Key better (in terms of memory allocation and GC collection) in this situation?

      1. OWB-639.patch
        2 kB
        Martin Kočí

        Activity

        Hide
        Mark Struberg added a comment -

        released with OWB-1.1.4

        Show
        Mark Struberg added a comment - released with OWB-1 .1.4
        Hide
        Mark Struberg added a comment -

        Txs 4 the catch! We are now using a cache based solution.

        Show
        Mark Struberg added a comment - Txs 4 the catch! We are now using a cache based solution.
        Hide
        Martin Kočí added a comment -

        a patch that reduces problem 2) a little.

        Method getBeanCacheKey is in my tests the producent #1 of StringBuilders.

        Show
        Martin Kočí added a comment - a patch that reduces problem 2) a little. Method getBeanCacheKey is in my tests the producent #1 of StringBuilders.

          People

          • Assignee:
            Mark Struberg
            Reporter:
            Martin Kočí
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development