31、编程中的间接层与Python字典实现解析

编程中的间接层与Python字典实现解析

1. 系统调用与间接层

在编程领域,系统调用的激增虽被认为不够优雅且违背Unix精神,但应用程序开发者却依赖它们来挖掘Web或数据库服务器的极致性能。这些系统调用存在一些共同代码,以FreeBSD实现为例,为避免代码重复,通过额外函数引入了间接层。其中, kern_preadv 处理位置系统调用变体的公共部分, kern_readv 处理其余两个系统调用,而所有四个调用的通用功能由 dofileread 函数处理。

从用户级程序调用读取函数到磁盘头移动以从盘片获取数据,这是一个漫长而曲折的过程。在此过程中,我们尚未考虑内核层之上(如虚拟机、缓冲、数据表示)以及文件系统处理请求时(再次涉及缓冲、设备驱动程序、数据表示)的情况。有趣的是,未涉及的两端存在一种对称关系:都涉及硬件接口(顶部的虚拟机,如JVM,以及底部的真实接口)、缓冲(顶部用于减少系统调用,底部用于优化硬件性能)和数据表示(顶部用于与用户区域交互,底部用于匹配物理层要求)。可以说,间接层无处不在。在我们所研究的代表性代码块中,九级函数调用、两次通过函数指针的间接调用以及一种特定领域语言,充分展示了间接层的强大力量。

1.1 间接层的优缺点

间接层和分层会增加空间和时间开销,并可能影响代码的可理解性。不过,时间和空间开销通常并不重要,在大多数情况下,额外的指针查找或子程序调用所引入的延迟在整体方案中微不足道。如今,现代编程语言的趋势是通过间接层进行某些操作,以提供更高的灵活性。例如,在Java和C#中,几乎所有对对象的访问都通过一次指针间接调用,以实现自动垃圾回收;在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值