Improving the Performance of the Paisley Pattern-Matching EDSL by Staged Combinatorial Compilation
Baltasar Tranc\'on y Widemann, Markus Lepper

TL;DR
This paper presents a technique to enhance the performance of the Paisley pattern-matching EDSL in Java by using staged compilation and bytecode generation, enabling more efficient pattern matching without altering the core language design.
Contribution
It introduces a transparent compilation approach with distributed bytecode generation and JIT compilation to optimize Paisley's pattern matching performance.
Findings
Significant reduction in runtime overhead compared to interpreted Paisley.
Performance improvements achieved without additional external technologies.
Technique applicable to other combinator languages on JIT platforms.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsNatural Language Processing Techniques · Logic, programming, and type systems · Parallel Computing and Optimization Techniques
