2014-03-03 59 views
0

這行代碼需要大約2秒的時間來執行!如何讓json jackson更快?

ObjectMapper mapper = new ObjectMapper(); 

因爲兩秒鐘是計算的生命期,有沒有什麼辦法讓傑克遜響應更快?

我使用:

<dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.13</version> 
    </dependency> 
+2

你不能更快地製作它。但考慮升級到傑克遜2. –

+0

使用單例實例 – 2014-03-03 06:31:14

+0

fastxml和codehaus之間有任何區別嗎?他們都有傑克遜 – MoienGK

回答

0

傑克遜的版本,您使用的是較舊的版本,可以考慮升級到2.0傑克遜。可能需要付出一些努力(取決於您使用的是什麼API),但任何新功能和性能增強可能僅爲2.x。有關更多信息和升級說明,請參閱Jackson Release: 2.0

至於ObjectMapper,這是Jackson Best Practices: Performance說:需要對給定類型所創建的第一次處理對象映射器緩存串行器和解串器(或者更準確地說,映射保持對供應商的參考:

ObjectMapper對象)。如果不重用映射器,則需要每次創建新的序列化器和反序列化器:由於涉及大量的內省和註釋處理,這些操作是昂貴的操作。

什麼是您正在運行的平臺,移動也許?在我3歲以上的筆記本電腦上創建一個實例的時間不到半秒鐘。

如果性能是一個問題,並且您的JSON不太複雜,那麼考慮使用Jackson的流式API(這是Jackson的真正強大功能)來自己解析JSON數據,它將快一個數量級。

+0

平臺是筆記本電腦corei7 8GB內存。 json有點複雜,並且有幾層涉及繼承和抽象 – MoienGK

+0

@dave我覺得很難相信''新的ObjectMapper()'在這樣一個強大的機器上需要2秒鐘,我的只是一個Core 2 Duo而且它大約需要400毫秒。你能再次測量嗎? – 2014-03-03 08:29:11