profile-guided optimization across process boundaries
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.
profiles optimality process effect message timing concurrent program program language erlang place code prototype measurement benchmark speedup - compiler optimization