Author(s):
Revanth Reddy Pasula

Abstract:
Julia’s just-in-time compilation provides good execution performance but carries a considerable startup latency, commonly known as the “time-to-first-execution” penalty. This overhead greatly diminishes the performance of brief-running routines and interactive pipelines. In this work, we present a new persistent daemon-client system designed to solve Julia’s startup latency problem by pre-compiling and storing frequently used libraries. The daemon process continuously runs in the background to do the heavy lifting of compilation so that the subsequent Julia routines (clients) may use the precompiled code rather than compiling it all over again. Our design and implementation of this system are presented, and performance results demonstrate up to a 98% improvement in execution latency for routines that use a high load of external packages. Such a technique greatly enhances the use of Julia in rapid prototype work, data analysis tasks, and other use cases in which startup must be quick. In this revised version, we describe the latency problem and our solution using clearer terms: time-to-first-execution (TTFX), native-code caching, and inter-process transport. We also quantify the effects with average benchmarks and ensure reproducibility.

Pages: 760-770

Read Full Article