我有一個web服務,它返回一個json字符串。 Alltogehter我有432個JSON對象與blob數據。 在每個Webrequest中,我得到了30個432的對象,直到432的Iam。 對於每個反序列化,反序列化的時間增加。 30對象需要9秒鐘,在第二次血化時我們需要15秒。 463對象是1,3 GB。用30個blob對象反序列化大型json數據
如何調整我的代碼,30個對象不需要9秒或更多?
的字符串看起來像下面這樣:
{
"d:" [
{
"id": "1",
"groesse": 2515221,
"byteasbase64string": "the base64 string"
},
{
"id": "2",
"groesse": 887748,
"byteasbase64string": "the base64 string"
}
]
}
繼承人我的C#代碼:
List<db.dwaprotokolldatei> getProtokolldatei = new List<db.dwaprotokolldatei>();
using (postStreamGPD = resGPD.GetResponseStream())
{
using (srGPD = new StreamReader(postStreamGPD))
{
string responseFromServerGPD = srGPD.ReadToEnd(); // Long running time
getProtokolldatei = JsonConvert.DeserializeObject<db.rootobject>(responseFromServerGPD).d;// Long running time
responseFromServerGPD = "";
}
}
reqGPD = null;
postDataAsBytesGPD = null;
postStreamGPD.Dispose();
postStreamGPD = null;
resGPD.Dispose();
resGPD = null;
srGPD.Dispose();
srGPD = null;
GC.Collect();
的WebRequest:
reqGPD = (HttpWebRequest)HttpWebRequest.Create("*****");
reqGPD.Method = "POST";
reqGPD.ContentType = "application/json";
mobileJSON = ConvertTOJSONMobile(existingMobile);
postDataAsBytesGPD = Encoding.UTF8.GetBytes(mobileJSON);
postStreamGPD = reqGPD.GetRequestStream();
postStreamGPD.Write(postDataAsBytesGPD, 0, postDataAsBytesGPD.Length);
postStreamGPD.Flush();
postStreamGPD.Dispose();
resGPD = reqGPD.GetResponse();
只爲您的信息 - 在包裹的東西'using'構建這樣已經呼籲包裹實例'的Dispose()'方法(在你的情況,'postStreamGPD'和'srGPD')。你不需要手動完成。 –
好的,但這並不能解決我的問題。 – Pascal
不,這就是爲什麼我沒有給它作爲答案,只是一個評論。 =) –