首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# List<T>序列化/反序列化性能有关问题

2013-08-01 
C# ListT序列化/反序列化性能问题System.Collections.Generic.ListArray数组System.Collections.Gene

C# List<T>序列化/反序列化性能问题
System.Collections.Generic.List==>Array数组
System.Collections.Generic.LinkedList==>Link链表

访问方面前者优于后者,但序列化/反序列化又是怎样一种情况呢?

在不需要随机访问特定元素, 但需要遍历全部或部分元素的情况下该如何取舍?

望有经验的专家不吝赐教, 谢谢.

(为防止无尾贴,分数稍后追加)
[解决办法]
说List是数组是不准确的。事实上,List内部使用了缓存。因此并非每次添加都会导致内存扩展操作。

从这个意义上说,担心List的性能基本没有必要。只有在很极端的情况下,才需要使用LinkedList。
[解决办法]
访问方面前者优于后者
应该加一个前提:(通过下标)访问指定元素
如果需要全部遍历,效率就差不多了(后者相当遍历迭代器)
但是在插入和移除方面,随着长度的增长,后者的效率高得多,前者需要移动元素
[解决办法]
随机访问
如果在意这点,又不考虑array 那果断就是list了啊,
list相比 LinkedList ,有索引,查询快 删除慢。

不过,其实也差不到哪去?
无所谓的,c#这方面,很少去优化,因为一般应用性能够了,极端应用,优化空间太少,别人根本就不会选用c#。
[解决办法]
序列化/反序列化也是前者优于后者,对于后者,属性嵌套属性,这意味着顶级元素的完成要在所有子级完成后才能完成,因此会占用大量堆栈资源,甚至可能堆栈溢出。而对于前者,只是简单的循环遍历即可填充其中元素,操作简单效率高。

热点排行