2015-01-21 6 views
3

으로 JSON에 내 데이터 집합을 serialize하려면. 여기 C#에서 JSON으로 JSON 직렬화 가속

내 ASMX의 코드 조각은

여기
 [WebMethod(EnableSession = true)] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public string GetProviderMemberDetail(string jsonString) 
     { 
      BPMember bp = new BPMember(); 
      List<BOProvider> listProvider = bp.GetProviderMemberDetail(jsonString); 
      return ConvertToSerializedJson(listProvider); 
     } 

가 ConvertToSerializedJson 내가 직렬화해야 할 데이터의 양이

 public string ConvertToSerializedJson(Object listBO) 
     { 
      string jsonReturn = String.Empty; 
      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      serializer.MaxJsonLength = Int32.MaxValue; 
      jsonReturn = serializer.Serialize(listBO); 
      return jsonReturn; 
     } 

을 무엇을하고있는 객체를 직렬화하는 것은 약, 200.000 많이 데이터.

이 방법을 시도했지만 브라우저가 응답을 얻지 못하고 응답이 완료되지 않았습니다. 완료하려면 6 분 정도 기다려야합니다.

두 번째 시도, 나는 이

using Newtonsoft.Json; 

그리고 조금 속도를

return JsonConvert.SerializeObject(listProvider); 

와 시리얼 코드를 변경을 추가 Newtonsoft.Json에서 시리얼 기능을 시도했지만 브라우저를 만든다 거의 끊어 버린다. 모든 직렬화를 완료하는 데 4 분이 걸립니다.

질문은 어떻게 직렬화 작업을 빠르게 할 수 있습니까? 내 쿼리는 쿼리 실행을 끝내고 DB에서 데이터를 검색하는 데 4 초 밖에 걸리지 않습니다. 오랜 시간이 걸리는 것은 직렬화 프로세스입니다. 이보다 더 빠르게 실행할 수있는 함수가 있습니까? 이름 라이브러리 또는 기능과 벤치 마크를 게시하십시오. 중요한 변경 사항이 있으면이 게시물을 업데이트 할 것입니다.

건배.

업데이트] 이것이 내가 너희들을 사랑하는 이유는 당신이 친절한 사람으로부터 조언, 속도를 가지고 있으며, 여기에 내가 조금 "조정할"것들이다.

@Saravanan이 말했듯이, 사용하지 않은 (또는 빈도가 거의없는) BO는 모두 줄였습니다. 그것은 성공적인 조정이었습니다. 300 초 (5 분) ~ 18 초.

@sanguaire가 명시한대로 fastJSON 라이브러리 (download here)를 사용하고 dll을 컴파일하고 프로젝트에 대한 참조를 추가하고 속도를 조금 높입니다.

나를 위해 200.000 데이터를 검색하는 데 필요한 시간은 약 14 초에서 18 초입니다. 이것은 17columns를 가진 나의 기준이다.

enter image description here

는 의견들 주셔서 감사합니다. 늦은 답변 죄송합니다. 나는 (내 점수가 최고 득표 표준에 도달한다면) 당신의 대답 모두에 투표 할 것이다.

+0

bo 객체의 크기와 중첩 정도는 무엇입니까? – Saravanan

+0

@Saravanan 50 개의 속성을 가지고 있으며,'code {get; 세트; }'모든 회원들에게. 그것은 50 개의 속성을 가지고 있지만, 제 경우에는 10 개의 속성 만 사용합니다. 속성 수에 영향이 있습니까? 그래서 현재 BO 멤버 객체가 내 팀 사용을 위해 새 팀 멤버를 만들 것입니다. – WhiteCrow

+0

분명히 영향을 미칠 것입니다 ... 또한 속성이 단순한 유형이라고 생각합니다 ... 도움이 될만한 경우 – Saravanan

답변

2

JSON 직렬화 (벤치 마크 포함)에 대한 다른 라이브러리에 대한 codeproject에 관한 좋은 기사를 찾을 수 있습니다.

현재 Article about JSON libraries

안녕 찾을 수 있습니다. http://aumcode.github.io/serbench/

차트 (속도와 페이로드 크기) :

+0

링크 만 제공 했으므로 주 대답과 그 포함을 게시하십시오. 링크 만있는 게시 솔루션을 사용하는 것이 바람직하지 않은 것을 알고 계셨습니까? 여기서 벤치 마크를 업데이트 할 예정입니다. – WhiteCrow

+1

예, 알지만이 기사는 많은 라이브러리를 처리하므로 기사를 반복하고 싶지는 않습니다. – sanguaire

0

이보기 ... [5000]

일반적인 사람/하나의 목록 [100] 목록 http://aumcode.github.io/serbench/Specimens_Typical_Person-201507121220/web/overview-charts.htm

얽혀 객체 그래프/회의/참가자/친구 ... http://aumcode.github.io/serbench/ObjectGraph_Conference-201507121245/web/overview-charts.htm

네트워크 스택 일괄 처리 ... http://aumcode.github.io/serbench/MsgBatching-201507121210/web/overview-charts.htm

우리는 EDI X12 테스트도 아직 발표하지 않았습니다. 도구를 가져 와서 다음과 같이 실행하십시오 : "sb edi.laconf"디스크에 웹 보고서를 생성합니다