优化方法调用:参数传递与内联的深入解析
1. 接口引用计数与对象销毁
在编程中,接口的使用十分常见。但需要注意的是,并没有类似 SetLength 或 UniqueString 这样的方法来创建接口的唯一副本,因为这需要复制底层对象,而目前没有内置支持。当接口的引用计数降为 0 时,实现该接口的对象就会被销毁,以下是示例代码:
var
i1, i2: IInterface;
begin
i1 := TInterfacedObject.Create;
// i1 指向引用计数为 1 的对象
i2 := i1;
// i1 和 i2 都指向引用计数为 2 的同一个对象
i1 := nil;
// i2 现在指向引用计数为 1 的对象
i2 := nil;
// 引用计数降为 0,对象被销毁
end;
接口的引用计数管理是有成本的,它通过互锁指令实现,比普通的递增/递减指令要慢。不过,只有在大量赋值接口时,这种差异才会比较明显。
2. 参数传递方式
Delphi 有两种向方法传递参数的方式:按值传递和按引用传递。
- 按值传递 :会复制原始值并将副本传递给方法,方法内对副本的修改不会影响原始值。
- 按引用传递 :传递的是值的地址(指针),通常比按值传递更快,因为指针一般比数组或记录小。方法可以通过该地址访问和修改原始值。按引用传递通过在参
超级会员免费看
订阅专栏 解锁全文
1102

被折叠的 条评论
为什么被折叠?



