在开发一个对百万级数据快速读取加载(ms级)的应用中,又想使用datagridview 控件在界面上显示。

最近被性能和稳定的问题折腾的够呛,最终发现如果直接使用C#提供的datatable来直接存储数据,响应速度远远超过1ms.

网上找了一圈,发现有个哥么分析的文章,受益匪浅。这里直接挂结论部分,详细看下方的原文链接。

介绍了DataTable中检索数据的两种方法,DataTable.Select 和DataTable.Rows.Find方法。在测试方法的执行效率之前介绍了如何为DataTable设置主键,并比较了在数据填充之前和数据填充之后设置主键花费的时间,结果表明,在数据填充完成之后,设置主键要比在填充数据之前设置主键效率要高的多。设置主键之后,比较了在有无主键的情况下,DataTable.Select 方法在仅对主键字段进行过滤时的性能,结果表明,在仅对主键进行检索时,设置主键之后使用DataTable.Select 方法会比没有主键的情况下的检索速度会快非常多。在相同条件下,如果仅需要查找某一条记录,使用DataTable.Rows.Find会比DataTable.Select快很多。在某些需要频繁操作DataTable查询的时候,要避免在循环体内调用DataTable.Select方法,采用将DataTable转换为等价的Dictionary结构,能够有效解决由于键值重复导致不能创建主键的问题,并且Dicitonary的采用哈希表的方式查找能够极大地提高查询效率。

百度文库上有人做成了PDF的,拿来做存档 PDF
Last modification:August 6, 2019
如果觉得文章对你有用,请随意赞赏