在Delphi中使用动态记录数组与TList <TMyRecord>的优缺点是什么?

这是一个理论性问题,旨在生成Delphi中不同数据存储方式的优缺点的查找列表。

假设我们有一个记录:

type
  TMyRecord = record 
    X,Y,Z: Single; 
    IsValid: Boolean; 
  end;

存储此类记录数组的基本选项是:

  • array of TMyRecord;
  • TList具有getter / setter的自定义后代
  • TList<TMyRecord>;

我对#1与#3比较特别感兴趣,两者之间的差异有多少,尤其是在性能方面。

00

TList<T> 优点:

  • 数组没有添加/插入/删除/排序/搜索的有用方法,TList却有。
  • TList具有Notify方法,可以重写该方法以对项目添加/删除执行一些自定义操作。

TList<T> 缺点:

  • TList<T>[i]实际上返回其元素副本所以你不能写这样的东西TList<TMyRec>[idx].SomeField := foo相反,您必须使用临时变量。数组显然允许这样的表达。 David Heffernan提到TList<T>.List消除了此缺点。但是,它仅出现在XE3中
  • TList是一个对象,不需要时应在程序完成将其删除
  • System.Generics.Collections单元可以为之前未使用System.Classes单元的项目增加大量的二进制文件大小。

我自己编写了一个TRecordList<T>类,将项目作为指针进行操作(就像经典的TList一样)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在脚本shebang中使用“ -l”时的优缺点是什么

来自分类Dev

使用GenericForeignKey与多表继承与OneToOneField的优缺点是什么?

来自分类Dev

在if语句的条件下使用括号的优缺点是什么?

来自分类Dev

结合使用jQuery UI和AngularJS的优缺点是什么?

来自分类Dev

使用交叉遗传算子的优缺点是什么?

来自分类Dev

使用 CDN 与 NPM/Yarn 进行依赖的优缺点是什么?

来自分类Dev

在xcode项目中使用系统调用的优缺点是什么

来自分类Dev

在JMeter中使用JMeterUtils.getProperty与__P的优缺点是什么?

来自分类Dev

在Apache中使用名称主机与默认主机的优缺点是什么?

来自分类Dev

Android:通过Android框架位置API使用FusedLocationProviderApi的优缺点是什么?

来自分类Dev

与Amazon Simple Notification Service(sns)相比,使用pubnub的优缺点是什么?

来自分类Dev

使用闭包代替共享状态锁的优缺点是什么?

来自分类Dev

使用布尔类型与字符串类型“ true” /“ false”的优缺点是什么?

来自分类Dev

使用闭包代替共享状态锁的优缺点是什么?

来自分类Dev

FXML的优缺点是什么?

来自分类Dev

使用ReactJS的优缺点

来自分类Dev

在Ubuntu 16.04上使用交换文件的优缺点是什么?是否建议在当前Ubuntu版本上在交换分区上使用交换文件?

来自分类Dev

jumboMode(dexOptions)的优缺点是什么

来自分类Dev

不同动画机制的优缺点是什么

来自分类Dev

If和Inline if的优缺点是什么?

来自分类Dev

加密的Ubuntu安装的优缺点是什么?

来自分类Dev

访客行为模式的优缺点是什么?

来自分类Dev

voyager laravel 框架的优缺点是什么?

来自分类Dev

使用 dblink postgresql 的优缺点

来自分类Dev

使用大型子网的缺点是什么?

来自分类Dev

使用fputcsv的优点/缺点是什么?

来自分类Dev

对数组而不是STL映射-可能吗?优缺点都有什么?

来自分类Dev

使用Puppet Master与通过git分发Puppet清单有什么优缺点?

来自分类Dev

在Swift中使用类型注释的优缺点

Related 相关文章

  1. 1

    在脚本shebang中使用“ -l”时的优缺点是什么

  2. 2

    使用GenericForeignKey与多表继承与OneToOneField的优缺点是什么?

  3. 3

    在if语句的条件下使用括号的优缺点是什么?

  4. 4

    结合使用jQuery UI和AngularJS的优缺点是什么?

  5. 5

    使用交叉遗传算子的优缺点是什么?

  6. 6

    使用 CDN 与 NPM/Yarn 进行依赖的优缺点是什么?

  7. 7

    在xcode项目中使用系统调用的优缺点是什么

  8. 8

    在JMeter中使用JMeterUtils.getProperty与__P的优缺点是什么?

  9. 9

    在Apache中使用名称主机与默认主机的优缺点是什么?

  10. 10

    Android:通过Android框架位置API使用FusedLocationProviderApi的优缺点是什么?

  11. 11

    与Amazon Simple Notification Service(sns)相比,使用pubnub的优缺点是什么?

  12. 12

    使用闭包代替共享状态锁的优缺点是什么?

  13. 13

    使用布尔类型与字符串类型“ true” /“ false”的优缺点是什么?

  14. 14

    使用闭包代替共享状态锁的优缺点是什么?

  15. 15

    FXML的优缺点是什么?

  16. 16

    使用ReactJS的优缺点

  17. 17

    在Ubuntu 16.04上使用交换文件的优缺点是什么?是否建议在当前Ubuntu版本上在交换分区上使用交换文件?

  18. 18

    jumboMode(dexOptions)的优缺点是什么

  19. 19

    不同动画机制的优缺点是什么

  20. 20

    If和Inline if的优缺点是什么?

  21. 21

    加密的Ubuntu安装的优缺点是什么?

  22. 22

    访客行为模式的优缺点是什么?

  23. 23

    voyager laravel 框架的优缺点是什么?

  24. 24

    使用 dblink postgresql 的优缺点

  25. 25

    使用大型子网的缺点是什么?

  26. 26

    使用fputcsv的优点/缺点是什么?

  27. 27

    对数组而不是STL映射-可能吗?优缺点都有什么?

  28. 28

    使用Puppet Master与通过git分发Puppet清单有什么优缺点?

  29. 29

    在Swift中使用类型注释的优缺点

热门标签

归档