当前位置:编程学习 > C#/ASP.NET >>

序列化、反序列化 的效率

在我的应用系统中,很多地方都需要用到序列化和反序列化,

不知序列化、反序列化效率怎么样? --------------------编程问答-------------------- http://andot.javaeye.com/blog/333720 --------------------编程问答-------------------- 主要是对一些复杂对象的序列化和反序列化! --------------------编程问答--------------------
引用 2 楼 wqzone 的回复:
主要是对一些复杂对象的序列化和反序列化!

那就要考虑设计是否有问题。 --------------------编程问答-------------------- 测试过了,序列化、反序列化效率不高。 --------------------编程问答--------------------
引用楼主 wqzone 的回复:
在我的应用系统中,很多地方都需要用到序列化和反序列化,

不知序列化、反序列化效率怎么样?


你不需要序列化、反序列化功能吗? --------------------编程问答--------------------
引用 4 楼 wqzone 的回复:
测试过了,序列化、反序列化效率不高。


问题是跟什么相比。比如说你跟加减乘除四则运算相比,那么就要看你这个四则运算的测试过程能不能在你的项目中取代序列化、反序列化。如果根本不能去取代,那么去比较就错了。

“效率最高”的代码其实就是什么都不做的代码。 --------------------编程问答--------------------
引用 6 楼 sp1234 的回复:
“效率最高”的代码其实就是什么都不做的代码。



这个深奥了 --------------------编程问答-------------------- 我系统中很多地方都用到将一些构造好的对象,由于平凡使用。使用缓存的方式。

但又由于是引用类型的,所以考虑到使用每次使用序列化,这样缓存的就不是原对象。可以避免引用对象带来的麻烦!

但由于频繁使用,序列化的又会有较多的开销。所以另辟途径! --------------------编程问答--------------------
引用 4 楼 wqzone 的回复:
测试过了,序列化、反序列化效率不高。

比起C/C++估计能低点吧.
--------------------编程问答-------------------- 学习了 --------------------编程问答--------------------
引用 7 楼 soldierluo 的回复:
引用 6 楼 sp1234 的回复:
“效率最高”的代码其实就是什么都不做的代码。



这个深奥了


没有什么深奥。就是说目的要明确,不能用根本不能实现原来功能的东西做对比测试,否则得到的关于“效率”的说法就肯定是荒谬的了。 --------------------编程问答--------------------
引用 8 楼 wqzone 的回复:
我系统中很多地方都用到将一些构造好的对象,由于平凡使用。使用缓存的方式。

但又由于是引用类型的,所以考虑到使用每次使用序列化,这样缓存的就不是原对象。可以避免引用对象带来的麻烦!

但由于频繁使用,序列化的又会有较多的开销。所以另辟途径!


没看懂。频繁使用,所以应该缓存对象啊?怎么可能需要序列化? --------------------编程问答-------------------- 序列化和反序列化一般和压缩或存贮配合使用,具体是否需要和具体环境有关:
1、程序架构
如果是富客户端的话,数据一般不做序列化和压缩的,否则服务器会占用很大的资源
2、网络环境
如果服务器和客户端的网络带宽并不好,例如使用EDGE通讯,这就要求对数据进行序列化后压缩。
3、数据大小
如果数据本身很小,序列化然后压缩,再反序列化的时间比直接发送还长,则不可取。如果数据本身很大,而网络情况很好的话,可以不序列化,相反需要序列化。

我以前做个一个测试,10万条数据的DATASET大约20M,使用压缩后比不压缩快80%多,但是如果100万条,后果是非常慢,因为网络本身是不错的。以上3点需要进行综合判定,具体是否需要使用需要程序员自己进行测试二者之间优劣,然后指定相应的算法,对程序进行优化。 --------------------编程问答-------------------- 另外,不要很幼稚地单纯搞什么抽象。我们反射(来克隆)的时候,都会同时写很多不用反射的代码,然后经常交替使用,从来不偏废一方。不能难脑子就以为越抽象的代码也高级,追求“万能代码”的人往往最后都做不出好的大系统而只是一个玩理论的人。 --------------------编程问答--------------------
引用 14 楼 sp1234 的回复:
另外,不要很幼稚地单纯搞什么抽象。我们反射(来克隆)的时候,都会同时写很多不用反射的代码,然后经常交替使用,从来不偏废一方。不能难脑子就以为越抽象的代码也高级,追求“万能代码”的人往往最后都做不出好的大系统而只是一个玩理论的人。


深有体会 不要搞什么 “万能代码”  

--------------------编程问答-------------------- 经常使用的数据通过cache等缓存,实现缓存依赖
--------------------编程问答-------------------- 一个引用对象你把他缓存了,以后很多地方使用起来都会是同一个对象。这样可能产生很多共享问题。

最好是把它序列化为一个btye[],然后缓存该btye[]。使用的时候再反序列化!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,