Under a heavy volume of asterisk events, there is an observable performance impact stemming from heavy reflection use:
- AbstractBuilder.setAttributes will always look up all setters for a type on every event construction. (18% of event build time)
- Setter names in AbstractBuilder are further transformed (e.g. check for src, clazz), and run through ReflectionUtil.StripIllegalChars on each invocation. This field name transformation result is not cached. (15% of event build time)
- ManagerConnectionImpl will invoke ManagerEvent.toString which by default will always look up all getters for a type on every invocation. (26% of event dispatch time)