Ada判别式记录的效率问题

在Ada语言的判别式记录类型(discriminated record type)中,包含了被称为判别器(discriminant)的元件(component),以及依赖判别器的记录分量(component)。

依赖判别器的记录分量构成了该记录类型的变体(variant)部分,即这部分数据实际所占用的内存大小取决于声明该类型的变量时的判别器的实际值。

如果在这类记录的变体后面还有其他记录分量,那么这些记录分量在该记录中的偏移量不是一个常数,而是一个需要计算的变量。

在Ada编译器生成的目标码中可以看到,被编译的源代码中对后续记录分量的访问操作都增加了计算偏移量的目标码。

笔者在解读某个大型软件时,看到了上述问题的一个实例。由于变体部分后面的记录分量被频繁访问,所产生的额外的时空开销是比较可观的。

因此,变体部分要放在判别式记录类型声明的底部。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值