2014-07-17 2 views
0

최근 JSON 매퍼로 POJO를 찾고 마침내 Jackson을 사용하여 결국 대부분의 장소에서 사용하기 때문에 좋았지 만 작은 테스트를 수행했을 때 평균 2 개의 속성을 갖는 Java 객체를 직렬화하는 것으로 밝혀졌습니다 450ms잭슨을 사용해도 괜찮습니까?

의 시간하지만 수동으로 매핑을 할 경우에만 미만 10ms의 소요, 아래의 시간을 계산하는 내 간단한 코드입니다.

public static void main(String[] args) throws Exception{  
    long time = new Date().getTime(); 
    User user = new User(); 
    user.set_id("100"); 
    user.setName("testuser"); 

    ObjectMapper mapper = new ObjectMapper(); 
    StringWriter write = new StringWriter(); 
    mapper.writeValue(write, user); 

    long endtime = new Date().getTime(); 
    System.out.println("Spent Time : "+(endtime-time)); 
} 

제 질문은 여전히 ​​Jackon을 사용해야합니까? 제가 이해하지 못했던 다른 어떤 이점이 있습니다. 내가 현재 일하고있는 노트 프로젝트에서 봄과 몽고범을 가지고 있고 우리의 임무는 REST 서비스를 개발하는 것이고, 우리는 원하지 않는 시간을 거는 특별한 요청을 원하지 않는다.

+0

프로젝트에서 Jackson이 무엇인지 알지 못하고 필요 없다면 간단히 사용하지 마십시오. 특정 기능이 필요할 때 언제든지 다시 전환 할 수 있습니다 –

+0

Gson을 보셨습니까? 아주 쉽게 갈 수 있습니다. 꽤 빠른 라이브러리이기도합니다! http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/ –

+0

'날짜'가 경과 된 시간을 측정하는 데 신뢰할 수 있다고 생각하지 않습니다. 시각. 참조 [이 답변] (http://stackoverflow.com/questions/1770010/how-do-i-measure-time-elapsed-in-java#answer-1776053) – BackSlash

답변

2

This benchmark result은 인스턴스 생성시 Jackson이 상당히 느린 것을 보여줍니다. Jackson 라이브러리를 효율적으로 사용하려면 ObjectMapper의 단일 인스턴스를 반복해서 사용해야합니다.

JSON 라이브러리를 사용할 때마다 클래스를 인스턴스화하면 벤치 마크 결과에 Gson을 사용하는 것이 좋습니다.

+0

당신이 말하는 게시물이 오해의 소지가 있습니다. ObjectMapper는 호출을 통해 공유되도록 설계되었습니다. http://wiki.fasterxml.com/JacksonBestPracticesPerformance –

+0

@AlexeyGavrilov 오해의 소지가 있다고 생각하지 않습니다. 게시물에'프로젝트가 JSON 라이브러리의 인스턴스를 즉석에서 생성하는 경우 GSON을 사용하는 것이 좋습니다. 그러나 이미 생성 된 라이브러리의 인스턴스가 있으면 Jackson이 더 빠릅니다. 내 프로젝트에서 Spring을 사용하기 때문에 Jackson을 사용하고 Spring 컨텍스트에서 ObjectMapper를 인스턴스화하는 것이 좋습니다. " – Heejin

+1

기본적으로 대답에서 말하는 것은 Jackson을 올바르게 사용하는 방법을 모르는 경우 다른 클래스를 사용하는 것입니다 도서관. –

관련 문제