Results 1 -
2 of
2
Profile-Guided Optimization Across Process Boundaries
- In Proceedings of the ACM SIGPLAN workshop on Dynamic and
, 2000
"... We describe a profile-driven compiler optimization technique for inter-process optimization, which dynamically inlines the effects of sending messages. Profiling is used to find optimization opportunities, and to dynamically trigger recompilation and optimization at run-time. We apply the optimizati ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
We describe a profile-driven compiler optimization technique for inter-process optimization, which dynamically inlines the effects of sending messages. Profiling is used to find optimization opportunities, and to dynamically trigger recompilation and optimization at run-time. We apply the optimization technique on the concurrent programming language Erlang, letting recompilation take place in a separate Erlang process, and taking advantage of the facilities provided by Erlang to dynamically replace code at run-time. We have implemented a prototype inter-process profiler and optimizer, that can handle small programs. Measurements on synthetic benchmarks show encouraging speedups of up to 1.8 times. 1. INTRODUCTION Erlang [2] is a concurrent programming language designed by the Computer Science Lab at Ericsson as a tool for developing large telecom applications. Concurrency is expressed by processes that communicate by message passing. All Erlang processes on a single processor execu...
The Design and Implementation of a High-Performance Erlang Compiler
, 1999
"... This paper describes the design decisions and implementation of a native code compiler for Erlang, a concurrent functional language. The compiler translates byte codes into three dierent intermediate formats, culminating in Sparc assembly code, which is dynamically linked into the system. We cri ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This paper describes the design decisions and implementation of a native code compiler for Erlang, a concurrent functional language. The compiler translates byte codes into three dierent intermediate formats, culminating in Sparc assembly code, which is dynamically linked into the system. We critically examine our experiences with the decisions taken. 1 Introduction Erlang is a functional language supporting concurrency, heterogenous distributed execution, and soft real-time programming [1]. It is in daily use in switches, call centers and internet servers, and similar high-availability products [2]. The Erlang implementations in use today are based on byte code emulation for portability, which hampers execution speed; a serious problem for high-performance applications. We have investigated Erlang implementation since 1996. The compiler described in this document was developed as a second system, a \reaction" to a previous implementation by Jonsson and Johansson, Jerico [3]. ...

