最近在跟http服务器使用json交互的时候,发现json数据很大,想着能省一点是一点,于是开始折腾字符串压缩.
本来Unity中的 .net的System.IO.Compression自带了Gzip的压缩功能,于是简单撸了下,可惜编辑器下跑得飞起,一上安卓就报错
DllNotFoundException:MonoPosixHelper at (wrapper managed-to-native) System.IO.Compression.DeflateStream:CreateZStream
。懵逼,度娘问了下,一堆英文吧,大致意思貌似是unity的这个库引用最后会在电脑上引用MonoPosixHelper这个dll,安卓上调不到。而且很明显这块也没多少人重视,博客文案啥的确实少。没辙,得找个解决方法····然后就找到了两个
- unity自己把.net的GZIP搞了出来,封了个package,叫GZipStream + DeflateStream - Unity.IO.Compression
官方下载地址,免费的
用起来很方便 直接把引用类从System.IO.Compression 改成Unity.IO.Compression 就能套着用了。但是也看到下面留言有人说速率很慢,我对比了下,前后相差速度差不多十倍不止·······确实揪心·······其实用起来么·也倒没那么大感觉···但是有人说慢,那咱还是得再折腾下。于是第二种
2. SharpZipLib
官网地址 http://icsharpcode.github.io/SharpZipLib/
人家说放dll库,愚笨,都没找到官方dll的下载地址。我就把官网代码我放到Unity 2018.2.20里面,结果不能用,报错说要.net 6.0。
继续上网找,顺便还得知道咋用,然后这是我引用的博客地址
https://www.cnblogs.com/ouyangnengjun/articles/3233053.html
http://www.ggcms.com/Article/36
糅合了下,用了起来,顺便对比了下性能 SL开头的就是SharpZipLib
Unity开头的就是Unity.IO.Compression,数据如下,压缩,解压,数据当然都是对的上的。
压缩前长度:3417
SLZip压缩后长度:1200
SLZip压缩用时:0.001710892
SLZip解压缩后长度:3417
SLZip解压缩用时:0.0002937317
SLGZip压缩后长度:1020
SLGZip压缩用时:0.001155853
SLGZip解压缩后长度:3417
SLGZip解压缩用时:0.0002689362
UnityGZIP压缩后长度:1252
UnityGZIP压缩用时:0.05883408
UnityGZIP解压缩后长度:3417
UnityGZIP解压缩用时:0.0004959106
从编辑器下测试数据来看, SLGZIP无论是压缩率还是压缩的性能表现明显更好····
个人还是肤浅,所见即所得了,也没时间继续折腾了,还得回去补功能代码,先就到这了···0.0
原文地址:https://mp.csdn.net/postedit/99754998 转载请注明出处!