浮动自标记
《Proceedings of the ACM on Programming Languages》:Float Self-Tagging
【字体:
大
中
小
】
时间:2025年11月07日
来源:Proceedings of the ACM on Programming Languages
编辑推荐:
浮点数自标记方法通过可逆位变换将值和类型信息合并存储,解决动态类型语言中浮点数编码效率问题,实验表明其可消除堆分配并提升浮点密集型程序性能。
摘要
动态和多态语言会将类型等信息附加到运行时对象上,因此需要调整内存布局以容纳这些信息。这使得高效实现IEEE754浮点数变得困难,因为该格式没有预留易于访问的空间来存储类型信息。目前常用的三种浮点数编码方式——带标签的指针、NaN装箱(NaN-boxing)和NuN装箱(NuN-boxing)都存在缺陷。带标签的指针会导致所有浮点对象都需要在堆(heap)上分配内存;而NaN装箱和NuN装箱则会增加类型检查及其他对象处理的运行时开销。
本文介绍了一种新的对象标记方法——自标记(self-tagging),该方法利用可逆的位运算将浮点数映射到带有正确类型信息的标记值中,这些标记值将数值和类型信息存储在同一机器字内。不过,这种映射方式只能将部分浮点数转换为正确类型的标记值,因此自标记利用了实际应用中浮点数分布的不均匀性,从而避免了频繁使用的浮点对象在堆上的分配。
研究人员在两种不同的Scheme编译器中实现了自标记技术,并在四种微架构上对其性能进行了评估,将其与带标签的指针、NaN装箱和NuN装箱进行了对比。实验表明,在实际应用中,该方法几乎可以完全避免所有浮点数的堆分配,显著提升了Scheme语言中依赖浮点运算的基准测试的性能,同时对其他基准测试的影响微乎其微。这使得自标记成为一种有吸引力的替代方案,可与带标签的指针以及NaN装箱和NuN装箱相媲美。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号