2016-10-20 1 views
-1

잭슨을 통해 복잡한 자바 객체를 많이 보내고 있지만 JSON과 같이 너무 긴 객체를 작성하는 데 약 6 초 가량 소요됩니다! I는 다음과 같이 구성되어 약 200 개체가 : 나는 조금 크기 때문에 MissionMV의 코드를 붙여 넣 싶지 않아잭슨과 JSON의 POJO가 너무 느림

public class LotListMV implements Serializable { 

    private static final long serialVersionUID = -1296813516060999040L; 

    Map<String, GroupingMissionMV> lotList; 

    String currency; 
    ... 
} 


public class GroupingMissionMV implements Serializable { 

    private static final long serialVersionUID = -343336819042189462L; 

    private List<MissionMV> missionMVList; 

    private int statusNiveau; 

    private String statusImgColor; 

    ... 
} 

을하지만 50 개 속성과 3 개 매우 작은 물체처럼 가지고있다. 클라이언트 측의 응답은 gzip으로 17kb입니다. 잭슨이 꽤 빠르다고 들었는데 왜 그렇게 느린지 정말 이해하지 못합니다. 나는 로커를 mappr.writeValueAsString(myObject) 전후에 넣고 문제가있는 곳인지 확인했다.

+1

아마도 한 요청에 거대한 응답을 보내는 대신 약 200 개의 요청과 응답을 보낼 수 있습니다. 여전히 시간이 오래 걸리지 만 클라이언트는 처음 몇 가지 응답을 더 빠르게받을 수 있습니다. –

답변

0

이것은 정보가 충분하지 않으며, 특히 JSON 처리에 소요되는 시간이 명확하지 않은 것으로 나타났습니다. 예를 들어 gzip에 대해 언급하고 gzip으로 인코딩 된 내용의 압축을 푸는 것은 JSON을 파싱하는 것보다 시간이 오래 걸립니다. 그 시간을 낭비하지 않았습니까? HTTP를 통해 콘텐츠를받는 데 시간이 오래 걸릴지 여부는 명확하지 않습니다. 또는 정상 상태 성능을 측정 한 경우 (Java의 경우 모든 코드에 대한 첫 번째 호출이 이후 사용보다 훨씬 느립니다). 요약하면 JSON 구문 분석 부분이 느린 이유는 분명하지 않습니다. 평가할 수 없으며 (콘텐츠 크기는 언급되지 않음)

JSON 구문 분석의 성능을 알고 싶다면 인 메모리 (이미 다운로드 한 내용)에서 읽음으로써 테스트해야합니다. 또는 최소한 네트워크의 콘텐츠를 버퍼링하고 다른 부분을 개별적으로 측정합니다.