rt,是将数据读取到DataTable,然后调用Select()方法,还是将数据先转换成对象,然后存储的Hashtable,两者效率谁的高?
我觉得一定是Hashtable,大家给点建议

解决方案 »

  1.   

    to 是将数据读取到DataTable,然后调用Select()方法,还是将数据先转换成对象,然后存储的Hashtable,两者效率谁的高?不能简单看这类问题。毕竟hashtable所进行检索的键值有限,即只能通过唯一键进行索引。
    而DataTable.Select可以适用的范围就比hashtable广泛。
      

  2.   

    <<CSDN开发高手>>有一期写的是集合类的一般上了1000行数据性能就没DataTable好了。
      

  3.   

    是将数据读取到DataTable,然后调用Select()方法,还是将数据先转换成对象,然后存储的Hashtable,两者效率谁的高?
    --------------------------------------------------------------
    hashTabel 检索效率肯定高,但还需要转换(有时可能还需要转换回去), 所以和DataTable总体效率差不多了.
    可以在DataTable中设置主键加快速度.
      

  4.   

    如果二者在楼主的上下文下都没问题
    一般而言hashtable快
      

  5.   

    如果是对具有唯一性的字段进行索引,并且Hashtable的Key就是这个唯一性字段的话,那么在记录条数非常多的时候应该Hashtable的效率是比较高的,毕竟是哈希检索,不用遍历扫描。
      

  6.   

    一般情况下,都可以找到像楼上所说的情形,即使原本不是这种,经过转换都可以变成这种情形,我一般都是这样做,然后放入Hashtable,我从散列的角度考虑,应该比DataTable.Select方法快很多,数据不是很多的时候就应该有所体现,而且我查了下Select方法 ,好像里面用了BinarySearch,这种二分法查找,只是对顺序查找的一种低级改进,速度的提高还要看原来的排列顺序,因此我粗略估计,应该是Hashtable,效果更好。昨天晚上测试,往里面分别填入一个25*50000000,竟然把我机器给累死了。没测试出来。以上都是字面理解,那位高手有不同见解,望指教
      

  7.   

    可以在DataTable中设置主键加快速度.---设置索引,好像索引的数据结构是B+树,和散列比起来,谁的快,我还真的不晓得,望指教。不过查找字符串的操作,图要比树快的多,哈西在二者的位置,不知道该如何排
      

  8.   

    我做过测试,100000万条数据时Hashtable仍然没有性能影响。(以顺序int做key)当然,key的hashcode分布越好,性能应该就越好。
      

  9.   

    我测试了。如果插汝1000000数据的话
    dataset   6列数据是7秒多
    HASHTABLE 是4秒多。在1000000数据中查找的话。我要找1000000数据全没有命中的情况下。
    HASHTABLE 是0。7秒
    dataset
    没有测试