中文

为乐趣和利润解构 Virgil ADT

编程语言 2024-10-16 v1

摘要

代数数据类型(ADT)在现代编程语言中日益常见。在许多实现中,非单元/多情况 ADT 的值会在堆上分配,这可能降低性能并增加内存使用。本工作探索了引导 ADT 表示优化的注释技术,Virgil 是一种面向系统的编程语言,可编译为 x86、x86-64、Wasm 和 Java 虚拟机。在 Virgil 中添加了注释:#unboxed 通过自动编译器转换到标量表示以消除堆分配开销,#packed 以启用程序员表达式的位布局。这些注释允许程序员既节省内存,又按硬件要求的数据格式操作数据。我们将本工作致谠于与 Jens 合作完成的工作,题目为《面向机器代码工具的声明性方法》,该工作为 2005 年的一份未发表的手稿。事实上,本工作继承了该先前工作中的一些语法约定。对这些表示更改的性能影响在各种工作负载上以执行时间和内存使用量进行评估,但我们不包括它,因为 Jens 更喜欢语义和类型系统!

关键词

引用

@article{arxiv.2410.11094,
  title  = {Unboxing Virgil ADTs for Fun and Profit},
  author = {Bradley Wei Jie Teo and Ben L. Titzer},
  journal= {arXiv preprint arXiv:2410.11094},
  year   = {2024}
}