动态编译器中基于列数组的控制流复制
摘要:基于列的数据库是加速在线分析处理(OLAP)查询的一种成熟方式。现今,数据处理(例如存储、可视化和分析)通常在编程语言级别上执行,因此也希望在常见的语言运行时中采用列状数据结构。虽然有框架、库和API可以在编程语言中实现列式数据存储,但将其集成到应用程序中通常需要开发人员的干预。在之前的工作中,研究人员在GraalVM JavaScript运行时中实现了一种将数组自动转换为列状数组的方法。然而,这种方法在较小的工作负载和更复杂的嵌套数据结构上存在性能问题。我们发现优化对列状数组的访问的关键是识别查询并对其应用特定的优化。在本文中,我们描述了GraalVM编译器中的新型编译器优化,用于优化对列状数组的查询。在JIT编译时,我们识别访问潜在的列状数组的循环并将其复制,以便特别优化对列状数组的访问。此外,我们还描述了一种通过执行多级存储转换来从复杂对象的数组中创建列状数组的新方法。我们通过实现JavaScript的`Date`对象来演示我们的方法。
作者:Sebastian Kloibhofer (Johannes Kepler University Linz, Austria), Lukas Makor (Johannes Kepler University Linz, Austria), David Leopoldseder (Oracle Labs, Austria), Daniele Bonetta (Oracle Labs, Netherlands), Lukas Stadler (Oracle Labs, Austria), Hanspeter M"ossenb"ock (Johannes Kepler University Linz, Austria)
论文ID:2302.10098
分类:Programming Languages
分类简称:cs.PL
提交时间:2023-02-21