[英]JSON parsing very slow in Google Cloud Endpoints
Google Cloud Endpoints建議使用GsonFactory或JacksonFactory進行JSON解析。
我發現從我的端點解析幾個1000個Java對象(每個對象只有幾個long和string字段以及一個GeoPt字段)需要很長時間,在Galaxy Note 2上大約需要15秒。
根據Google的建議,我使用:
myBuilder = new MyDbEndpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential);
myEndpoint = myBuilder.build();
...
List<myDb> beings = myEndpoint.myDBEndpoint().someMethod().execute().getItems();
我在JacksonFactory()上獲得了相同的性能。
我進行了一些分析,發現所有時間都花在了JSON解析上。
除了“分頁”我的數據獲取之外,有人可以在這里提出任何加快速度的建議嗎?
謝謝。
令您驚訝的是,您發現這些實現之間的速度沒有差異-我認為傑克遜應該更快。
拋開這些,我真的不會期望整個工作方式很快。 作為具有C / C ++背景的人,Google / GAE / Endpoints交流數據的方式一直令我感到瘋狂,效率低下-將二進制數據轉換為文本,然后將其嵌入結構化的文本表示形式,然后進行所有解析另一端的數據(例如,與struct的數據相比)。
現在,如果您只是來回發送一些對象,那實際上並不重要,但是您正在談論解析幾千個對象。
但是您不會因為使用Java而陷入效率低下的方法中。 Java還支持NIO(我認為GAE也支持NIO),Google還創建了協議緩沖區,該協議的緩沖區要比JSON / XML高效得多,同時仍保持語言中立。 https://developers.google.com/protocol-buffers/docs/overview
因此,如果解析“幾個1000個Java對象”對於您的應用程序來說是正常的,我建議您考慮為對象使用不同的表示形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.