2017-03-02 1 views
0

現在、Jacksonデータバインディングライブラリを使用してMapから52のJavaオブジェクトを作成しようとしていますが、現在52個のオブジェクトすべてを変換するのに合計3.518秒かかります。非常に遅くなる。なぜこれが当てはまるのか分かりません。これは異常ですか、これらのコンバージョンをより速くするためにできることがありますか?ここでJackson Object Mapperを使用してマップをJavaオブジェクトに変換するのが非常に遅い

は私のJavaオブジェクトのクラスである:ここで

public class MoodDatapoint extends DocumentModelHelper { 

    @JsonProperty(value = "happiness") 
    private int happiness; 

    @JsonProperty(value = "stress") 
    private int stress; 

    @JsonProperty(value = "pain") 
    private int pain; 

    @JsonProperty(value = "timestamp") 
    private long timestamp; 

    @JsonProperty(value = "lat") 
    private double lat; 

    @JsonProperty(value = "lng") 
    private double lng; 

    @JsonProperty(value = "comment") 
    private String comment; 

    @JsonProperty(value = "event_name") 
    private String eventName; 

    @JsonProperty(value = "is_before") 
    private boolean isBefore; 

    @JsonProperty(value = "related_event_id") 
    private String relatedEventID; 
} 

は、私はクラスに変換しようとしています地図です:

{ 
    stress=0, 

    pain=0, 

    happiness=10, 

    timestamp=1488464269384, 

    is_before=false, 

    lng=-79.6208645, 

    event_name=null, 

    comment=, 

    lat=43.6462939, 

    related_event_id=null 
} 

、目的に地図を変換するために私のコード:

ObjectMapper m = new ObjectMapper(); 

MoodDatapoint datapoint = m.convertValue(map, MoodDatapoint.class); 

logcatを使用して各オブジェクトの変換時間を計算すると、各変換に平均値o 62ミリ秒F:

... 
D/M DATAPOINT CONVERSION DURATION: 68 
D/M DATAPOINT CONVERSION DURATION: 45 
D/TOTAL DURATION (S): 3550 
D/AVG DURATION: 68 
D/Total objects: 
+0

あなたはこれを指摘していますか、それとも疑問がありますか? –

+2

もっとコードを投稿できますか?それは、すべての変換のためのObjectMapperを作成しているようです...これは実際に非常に遅いです。 – Okas

+0

@Okasそれは実際問題でした!私は現在、ObjectMapperの単一インスタンスを使用しています。同じ操作で3500+ msから52msになりました。ありがとうございました。 – damememan

答えて

1

単一のインスタンスを作成し、すべての変換のためにそれを使用する代わりに、すべての変換のためにObjectMapperを作成しないでください。 ObjectMapperの作成は非常に高価な操作です。

関連する問題