Gunnink, Marco (2021) HandCrank: Hybrid Partial Evaluation for JavaScript. Master's Thesis / Essay, Computing Science.
|
Text
mCS_2021_GunninkM.pdf Download (783kB) | Preview |
|
Text
toestemming.pdf Restricted to Registered users only Download (120kB) |
Abstract
JavaScript is the language for creating dynamic web content, which is becoming increasingly more complex. At the same time, users of websites expect them to respond fast, requiring good runtime performance. One method for improving the performance of computer programs is partial evaluation. Partial Evaluation is of particular interest for Domain-Specific Languages (DSLs), where a partial evaluator can improve the performance of programs written in a DSL by eliminating the overhead of the DSL interpreter. However, this technique is not easy to implement for such a complicated language as JavaScript, and may still lead to problems like code explosion. An alternative approach, called Hybrid Partial Evaluation (HPE) [Amin Shali and William Cook. ‘Hybrid Partial Evaluation’] offers to alleviate these problems. This thesis describes a semantics of HPE for JavaScript and HandCrank: an implementation based on it. In addition to the existing semantics of HPE, we offer a novel implementation of non-local control flow and tracking of object modification in HPE. The implementation is tested on a number of benchmark programs to see if their specialized versions perform better than the original ones. The results of these benchmarks show that not all partially evaluated programs are faster, but in certain cases, Hybrid Partial Evaluation can result in increased performance.
Item Type: | Thesis (Master's Thesis / Essay) |
---|---|
Supervisor name: | Storm, T. van der and Renardel de Lavalette, G.R. |
Degree programme: | Computing Science |
Thesis type: | Master's Thesis / Essay |
Language: | English |
Date Deposited: | 07 Apr 2021 15:05 |
Last Modified: | 07 Apr 2021 15:05 |
URI: | https://fse.studenttheses.ub.rug.nl/id/eprint/24219 |
Actions (login required)
View Item |