我有一个对象列表,比如List<Topic>
我想序列化它们。我正在使用XmlSerializer,它工作正常。但每次它都会序列化和反序列化整个对象,那么它不会影响性能吗?列表的项目可以随时删除,一旦删除它也应该从Xml中删除。
这是我目前的序列化代码: -
XmlSerializer serializer = new XmlSerializer(typeof(List<Topic>));
serializer.Serialize(somestream, topicList);
要反序列化,我只想写: -
XmlSerializer serializer = new XmlSerializer(typeof(List<Topic>));
topicList = serializer.Deserialize(somestream) as List<Topic>;
这项技术可以或者我们可以提高性能吗?列表通常包含80-100个项目。
提前致谢:)
答案 0 :(得分:3)
首先,您是否经过测试以确保存在性能问题?
其次,XmlSerializer无法删除代表已删除的项目的XML位,而无需执行完整的序列化来计算已更改的内容以及更改XML的方式。
因此,虽然根据您的对象,性能可能成本高昂,也可能成本不高,但是无法仅序列化/反序列化列表的一部分,只能根据更改的项目对XML进行少量修改。
但是,如果您经常序列化/反序列化,并对列表的某些部分进行更改,那么在您的情况下是否可以查看使用数据库?