C# DataTable vs 一些通用的集合性能

标签 c# generics datatable boxing unboxing

我知道 DataTable当我们插入/获取数据时正在使用装箱/拆箱。如果我们有大量仅包含 int 的数据例如,使用某种通用的 DataTable 不是更快吗? ,比方说 MyDataTable<int> ,这将导致避免装箱/拆箱开销?

最佳答案

字符串是引用类型,因此没有装箱开销:它们从不装箱。 DataTable 确实有很多开销——这是能够表示任意列模型以及约束、更改跟踪等的成本。为了获得最佳性能,POCO 模型很难被击败。例如:

public class Customer {
    public int Id { get; set; }
    public string Name { get; set; }
    // ...
}

有很多 ORM 和微型 ORM 可以使用这种类型的模型。

但是请注意,在 DataTable 中,值存储在类型正确的数组中。整数存储在 int[] 中——这是通过将数据存储在列而不是行中来实现的。装箱仅在将数据输入/输出 DataTable 时发生。

关于C# DataTable vs 一些通用的集合性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989868/

相关文章:

c# - 尝试使用 webgrid 对 Controller 进行单元测试时,HttpContext 为空

c# - Windows 电话 8 : Media file access

c# - Entity Framework 4.1 和数据库 (MySQL) 性能问题 {当表包含 320 000 行时如何加快查询以返回第一条记录}

c# - 基于原生OpenCV的unity上的Android应用

javascript - JQuery 数据表 : Unable to sort column after adding columnDefs

C#自动生成SQL "user-defined table type"

java - 在非泛型类中采用 List 的泛型方法

c# - 向上转型泛型

r - 为新类定义 S3 "Math"组泛型时出现意外的 log2 错误

mysql - 将组合框添加到链接到数据表的数据网格