[英]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.