Tôi có đoạn mã sauLàm thế nào để làm cho việc deserialization XML nhanh hơn?
public static object XmlDeserialize(string xml, Type objType)
{
StringReader stream = null;
XmlTextReader reader = null;
try
{
XmlSerializer serializer = new XmlSerializer(objType);
stream = new StringReader(xml); // Read xml data
reader = new XmlTextReader(stream); // Create reader
return serializer.Deserialize(reader);
}
finally
{
if(stream != null) stream.Close();
if(reader != null) reader.Close();
}
}
Đối tượng chính nó đã được tạo ra thông qua xsd.exe và trông loại như thế này:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class MyObject {
private DemographicsCriteriaStateStartAge[] startAgesField;
private DemographicsCriteriaStateEndAge[] endAgesField;
private DemographicsCriteriaStateFilter[] selectedFiltersField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("StartAge", IsNullable=false)]
public DemographicsCriteriaStateStartAge[] StartAges {
get {
return this.startAgesField;
}
set {
this.startAgesField = value;
}
}
...
Phương pháp này thường được gọi là như thế này:
var obj = (MyObject) XmlDeserialize(someXmlString, typeof(MyObject));
Dòng mã sau luôn mất một khoảng thời gian khá lớn (so với mọi thứ khác):
XmlSerializer serializer = new XmlSerializer(objType);
Điều gì đang xảy ra ở đây, ví dụ: là nó biên dịch một hội đồng deserialization trong nền? Tại sao vấn đề hiệu suất?
Tôi có thể làm gì để cải thiện vấn đề hiệu suất này?
Một mặt lưu ý, thay vì 'thử … Cuối cùng, bạn có thể sử dụng 'using'. – svick