求TPointSet数组最优复制方案:最少代码行且性能最快的方法
静态数组高效复制方案(无需循环)
Type TPointSet = Array [1 .. 300] of TPoint;
var set1, set2 : TPointSet;
set2 := set1; // 无法实现数组复制且无编译错误
最优方案:使用Move内存拷贝
直接调用Delphi内置的Move过程,这是性能最高的实现方式——它直接对内存块进行字节级拷贝,不需要循环遍历元素,代码仅需一行:
Move(set1[1], set2[1], SizeOf(TPointSet));
- 核心逻辑:
Move会把set1起始位置(索引1)开始、总大小为SizeOf(TPointSet)的内存数据,完整复制到set2的对应内存区域,完全跳过逐个元素赋值的开销,性能拉满。 - 注意事项:因为是静态固定大小数组,
SizeOf(TPointSet)能精准获取整个数组的内存占用,确保拷贝无遗漏。
备选方案:使用Copy函数(部分Delphi版本支持)
如果你的Delphi版本支持静态数组的Copy操作,也可以用更简洁的写法:
set2 := Copy(set1);
不过相比Move,Copy底层会有额外封装逻辑,性能略低于直接内存拷贝,但代码同样满足“无循环、行数少”的要求。
内容的提问来源于stack exchange,提问作者Franz
相关产品推荐
相关产品推荐

