The ildl-plugin is a meta-programming technique aimed at allowing safe, custom transformations across library boundaries. Using ildl-based transformations, we were able to obtain speedups in excess of 20x and have optimized code across a wide range of use-cases:
- avoiding heap allocation
- transforming collections of data
- deforestation and retrofitting specialization
- array of struct to struct of array transformations
If you're interested in:
- trying it out, check out the
Introduction
page of the wiki; - understanding the theory, check out this paper.
Thanks and enjoy!