1 research outputs found
Improving the Performance of the Paisley Pattern-Matching EDSL by Staged Combinatorial Compilation
Paisley is a declarative lightweight embedded domain-specific language for
expressive, non-deterministic, non-invasive pattern matching on arbitrary data
structures in Java applications. As such, it comes as a pure Java library of
pattern-matching combinators and corresponding programming idioms. While the
combinators support a basic form of self-optimization based on heuristic
metadata, overall performance is limited by the distributed and compositional
implementation that impedes non-local code optimization. In this paper, we
describe a technique for improving the performance of Paisley transparently,
without compromising the flexible and extensible combinatorial design. By means
of distributed bytecode generation, dynamic class loading and just-in-time
compilation of patterns, the run-time overhead of the combinatorial approach
can be reduced significantly, without requiring any technology other than a
standard Java virtual machine and our LLJava bytecode framework. We evaluate
the impact by comparison to earlier benchmarking results on interpreted
Paisley. The key ideas of our compilation technique are fairly general, and
apply in principle to any kind of combinator language running on any
jit-compiling host.Comment: Part of DECLARE 19 proceeding