[ https://issues.apache.org/jira/browse/NIFI-5801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joseph Witt updated NIFI-5801: ------------------------------ Issue Type: Improvement (was: Bug) > Evaluating Expression Language can in many cases be made much more efficient > ---------------------------------------------------------------------------- > > Key: NIFI-5801 > URL: https://issues.apache.org/jira/browse/NIFI-5801 > Project: Apache NiFi > Issue Type: Improvement > Components: Core Framework > Reporter: Mark Payne > Assignee: Mark Payne > Priority: Major > Fix For: 1.9.0 > > Time Spent: 20m > Remaining Estimate: 0h > > When a StandardPropertyValue is obtained and evaluateAttributeExpressions is > called, it builds the entire Evaluator Tree each time. This was done to > ensure that Evaluator.evaluate() is called only once. However, the > requirement to call this only once was introduced as a way to have > anyMatchingAttribute, anyAttribute, allMatchingAttributes, allAttributes, > etc. methods work, and these are rarely used. I.e., we introduced semantics > that significantly slow performance in order to provide functionality that is > used maybe 1% of the time. Instead, we should optimize for the 99% use case > and incur a penalty, if necessary, in the 1% use case instead. Profiling the > ConsumeKafkaRecord processor shows that 80% of the time in that method is > evaluating Expression Language for `${schema.name}` to determine which schema > should be used. We can likely make this evaluation just as quick as > attributeMap.get("schema.name") by pre-building the Evaluators and re-using > them. -- This message was sent by Atlassian JIRA (v7.6.3#76005)