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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/10/2018

A Simple Java Code Generator for ACL2 Based on a Deep Embedding of ACL2 in Java

AIJ (ACL2 In Java) is a deep embedding in Java of an executable, side-ef...
research
12/01/2020

Customizing Host IDE for Non-programming Users of Pure Embedded DSLs: A Case Study

Pure embedding as an implementation strategy of domain-specific language...
research
08/30/2021

Embedded Pattern Matching

Haskell is a popular choice for hosting deeply embedded languages. A rec...
research
09/10/2018

Loop Patterns: Extension of Kleene Star Operator for More Expressive Pattern Matching against Arbitrary Data Structures

The Kleene star operator is an important pattern construct for represent...
research
06/28/2021

Combinatorial BLAS 2.0: Scaling combinatorial algorithms on distributed-memory systems

Combinatorial algorithms such as those that arise in graph analysis, mod...
research
11/26/2019

3D IC optimal layout design. A parallel and distributed topological approach

The task of 3D ICs layout design involves the assembly of millions of co...
research
01/23/2022

Two-level Just-in-Time Compilation with One Interpreter and One Engine

Modern, powerful virtual machines such as those running Java or JavaScri...

Please sign up or login with your details

Forgot password? Click here to reset