加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

大数据量(16M)DataSet压缩方法比较

发布时间:2020-12-17 02:48:11 所属栏目:安全 来源:网络整理
导读:对于在WebService上必须(无法避免的情况下)要传输大量数据的DataSet时,对DataSet压缩是最好的方法,这样可以减少大量在网络传输过程中所占用的时间。? 下面对我掌握的的DataSet压缩方法做一个测试,希望高人有斧正之处,也希望需要的人有借鉴之处。? 注:经
对于在WebService上必须(无法避免的情况下)要传输大量数据的DataSet时,对DataSet压缩是最好的方法,这样可以减少大量在网络传输过程中所占用的时间。? 下面对我掌握的的DataSet压缩方法做一个测试,希望高人有斧正之处,也希望需要的人有借鉴之处。? 注:经过压缩DataSet的WebService就缺少了通用性,请权衡使用之。? ? 测试源码(仅压缩部分)和结果如下:? 条件:压缩前的DataSet的大小为16891323字节(大约16.12M)。? 环境:.Net? Formatwork? 1.1? 系统:? Windows? XP? SP1? 硬件:P4(2.4G)? +? 256DDR? ? 方案1:DataSetSurrogate? +? BinaryFormatter? ?????? Public? Function? DataSetToByte(ByVal? DataSet? As? DataSet)? As? Byte()? ?????????????? Dim? DSS? As? New? DataSetSurrogate(DataSet)? ?????????????? Dim? MS? As? New? IO.MemoryStream? ?????????????? Dim? BF? As? New? BinaryFormatter? ?????????????? BF.Serialize(MS,? DSS)? ?????????????? Dim? ReVal()? As? Byte? =? MS.ToArray()? ?????????????? MS.Close()? ?????????????? DSS? =? Nothing? ?????????????? MS? =? Nothing? ?????????????? BF? =? Nothing? ?????????????? Return? ReVal? ?????? End? Function? ? 方案2:DataSetSurrogate? +? BinaryFormatter? +? SharpZipLib? ?????? Public? Function? DataSetToByte(ByVal? DataSet? As? DataSet)? As? Byte()? ?????????????? Dim? MS? As? New? IO.MemoryStream? ?????????????? Dim? ZOS? As? New? ZipOutputStream(MS)? ?????????????? ZOS.PutNextEntry(New? ZipEntry(DataSet.DataSetName))? ?????????????? Dim? BF? As? New? BinaryFormatter? ?????????????? Dim? DSS? As? DataSetSurrogate? =? New? DataSetSurrogate(DataSet)? ?????????????? BF.Serialize(ZOS,? DSS)? ?????????????? ZOS.CloseEntry()? ?????????????? ZOS.Close()? ?????????????? Dim? ReVal? As? Byte()? =? MS.ToArray? ?????????????? MS.Close()? ?????????????? MS? =? Nothing? ?????????????? ZOS? =? Nothing? ?????????????? BF? =? Nothing? ?????????????? DSS? =? Nothing? ?????????????? Return? ReVal? ?????? End? Function? ? 方案3:zlib? ?????? Public? Function? DataSetToByte(ByVal? DataSet? As? DataSet)? As? Byte()? ?????????????? Dim? MS? As? New? System.IO.MemoryStream? ?????????????? DataSet.WriteXml(MS,? XmlWriteMode.WriteSchema)? ?????????????? Dim? ReVal()? As? Byte? =? MS.ToArray? ?????????????? MS.Close()? ?????????????? MS? =? Nothing? ?????????????? Dim? zlib? As? New? vbZLib.Compress? ?????????????? zlib.CompressByte(ReVal)? ?????????????? zlib? =? Nothing????????????????? ?????????????? Return? ReVal? ?????? End? Function? ? 结果(压缩后):? 方案1:4420881字节(被压缩掉大约73.83%),耗时:23200ms? 方案2:? 696881字节(被压缩掉大约95.87%),耗时:26621ms? 方案3:? 422990字节(被压缩掉大约97.50%),耗时:??? 680ms? ? 看来,无论压缩率还是耗时都是方案3最优,但是使用了第三方组件。前两个方案对CPU资源占用率的也让人无法接受。? 作者:魏滔序? (zhongnian_wei&163.com) ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读