Affiliation:
1. Yale Univ., New Haven, CT
Abstract
The functional programming style is increasingly popular in the research world, but functional languages still execute slowly relative to imperative languages. This is largely because the power and flexibility of functional languages restrict the amount of information readily available to the compiler, hindering its ability to generate good code. This article demonstrates that information about
order of evaluation of expressions
can be statically inferred for nonstrict functional programs and that optimizations based on this information can provide substantial speedups at runtime. We present an exact, nonstandard semantics called
path semantics
that models order of evaluation in a nonstrict, sequential functional language, and its computable abstraction,
path analysis
. We show how the information inferred by path analysis can be used to implement destructive aggregate updating, in which updates on functional aggregates that are provably not live are done destructively. We also demonstrate a new approach to strictness analysis and show that strictness analysis is subsumed by path analysis. Benchmarks are presented.
Publisher
Association for Computing Machinery (ACM)
Reference27 articles.
1. List processing in real time on a serial computer
2. ~BLOSS A. 1989. Path analysis and the optimization of non-strict functional languages. Ph.D. ~thesis Yale Umv. Dept. of Computer Science Also Res Rep. YALEU/DCS/RR-704.]] ~BLOSS A. 1989. Path analysis and the optimization of non-strict functional languages. Ph.D. ~thesis Yale Umv. Dept. of Computer Science Also Res Rep. YALEU/DCS/RR-704.]]
3. Variations on strictness analysis
4. An Optimising Compiler for a Modern Functional Language
Cited by
3 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Improving implicit parallelism;ACM SIGPLAN Notices;2016-01-28
2. Improving implicit parallelism;Proceedings of the 2015 ACM SIGPLAN Symposium on Haskell;2015-08-30
3. Static Analysis for Safe Destructive Updates in a Functional Language;Logic Based Program Synthesis and Transformation;2002