我所用的项目中,dataset用得比较多,一来开发速度快,二来培训成本低。而且dataset自身和gridview开发结合得很好,很多巧妙的方法用dataset来绑定比较好处理。比如动态字段、元数据字段,如果用泛型的话,会存在实体类的修改问题。有人会说dataset效率很低,其实不然,如果应用场景合适,性能带来的影响是几乎感觉不出来的。
为了测试dataset性能到底如果,我把它和泛型+实体类的分页绑定方式做了对比。对比环境如下:
使用同一个工程的同一页面,使用同一个存储过程。表记录集为20W,600W,1900W。
测试时间为数据开始到绑定结束为止。
结果让人吃惊的是:首页及前面顺序翻页的情况下,每一种级别的两种方式分页的耗时都是差不多的,凭感觉并不能体验到性能差距或者说基本感觉不到。但,有一个很奇怪的地方,那就是每种数据库级别的尾页情况,倒着往前面翻页的时候,dataset绑定方式比泛型绑定方式慢了4~4.5倍!!!,并且泛型绑定方式保持了首尾翻页速度基本一致的性能。这真叫人想不明白,一样的存储过程,返回一样的记录,顺序翻页时候差距都不大,怎么倒着翻页差距就这么大呢?
看来,考虑到大数据量的场景,使用泛型还是有必要的 。