摘要
函数式语言编译中,闭包变换和函数消除是广泛采用的高阶代码消除方法。为了提高函数式语言的运行效率,针对函数式语言编译阶段的高阶代码消除过程对目标代码效率的影响,设计并实现了一种函数式语言编译框架。该框架采用了菱形的架构,平行地使用了闭包变换与函数消除两种高阶代码消除方法。设计了一种具有代表性的函数式语言——FUN语言,并以FUN语言为基础,给出了比较框架的一个完整实现。通过该系统,对闭包变换与函数消除的效率影响进行对比实验,选取具有典型特征的测试例,分别从生成代码的规模和运行效率方面对闭包变换与函数消除两种方法的结果进行比较。实验结果表明,与闭包变换相比,使用函数消除方式所得的目标代码量更少,最多可减少33.76%的目标代码量;并且运行效率更高,最多可提高69.51%。
In functional programming language compilation, closure conversion and defunctionalization are two widely used higher-order code eliminating methods. To improve the operational efficiency of functional programming languages, focusing on the higher-order code eliminating phase, a compiler frame to compare the performance of code generated by closure conversion and defunetionalization was proposed. Both closure conversion and defunctionalization were used in parallel in the comparing frame with a diamond structure. A functional programming language named FUN and a compiling system for FUN based on the comparing frame was proposed. Comparison experiments of closure conversion and defunetionalization were conducted on the proposed system by using typical use cases, and the experimental results were compared in code quantity and operation efficiency. The result suggests that compared with closure conversion, defunctionalization can produce shorter and faster target code; the amount of code can be decreased by up to 33.76% and performance can be improved by up to 69. 51%.
出处
《计算机应用》
CSCD
北大核心
2016年第9期2481-2485,共5页
journal of Computer Applications
基金
国家自然科学基金青年科学基金资助项目(61202052)
苏州市科技计划应用基础研究项目(SYG201406)~~
关键词
编译框架
函数式语言
高阶代码
闭包变换
函数消除
compiler frame
functional programming language
higher-order code
closure conversion
defunctionalization