You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by "Steve Lawrence (JIRA)" <ji...@apache.org> on 2018/01/17 16:41:00 UTC
[jira] [Created] (DAFFODIL-1877) Slow schema compilation due to
unambiguous checks
Steve Lawrence created DAFFODIL-1877:
----------------------------------------
Summary: Slow schema compilation due to unambiguous checks
Key: DAFFODIL-1877
URL: https://issues.apache.org/jira/browse/DAFFODIL-1877
Project: Daffodil
Issue Type: Bug
Components: Front End, Performance
Reporter: Steve Lawrence
Fix For: 2.1.0
Commit 02c8324294ed4395c1231c6ea3ec6ae77139ba46 caused ATO schema compilation time to jump from about 10 seconds to over 2 minutes. Large increases were also seen in VMF schema compilation.
Some debugging showed that the cause is likely in the DFDLPathExpressionCompiler. Wrapping the following code the compiles an individual expression in a Timer shows an average of 9000% increase in time to compile.
```scala
val compiler = new DFDLPathExpressionParser[T](qn,
nodeInfoKind, namespaces, compileInfoWherePropertyWasLocated, isEvaluatedAbove)
val compiledDPath = compiler.compile(expr)
compiledDPath
```
So this most likely has something to do with schema compilation. Nothing jumps out at me in the specified commit as being especially egregious to cause such a performance degredation. All the really changed was passing an extra parameter for error accumulation and changing how isReferencedByExpressions is set. I wouldn't expect that to cause such performance changes. Perhaps it is findNamedMatches now allocating a Seq?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)