【发布时间】:2011-07-07 02:04:46
【问题描述】:
我创建了一个应用程序,我在其中使用 SAX 解析器解析来自服务器的数据。我关注了this link
它工作正常,但花了很多时间。我需要减少解析内容的时间。 有什么专业提示吗?
【问题讨论】:
-
发布你的 SAX 解析代码,否则......嗯,这对你来说有点 teensy 有点难。
我创建了一个应用程序,我在其中使用 SAX 解析器解析来自服务器的数据。我关注了this link
它工作正常,但花了很多时间。我需要减少解析内容的时间。 有什么专业提示吗?
【问题讨论】:
显而易见的提示是:分析您的代码并确定时间的去向。也许您正在做很多工作来处理一些 SAX 事件。也许时间花在做一些与解析完全无关的事情上。除非您进行个人资料介绍,否则您无法判断。
【讨论】:
就像泰德说的,profile your code。
您确定是解析时间而不是加载时间吗?你是wifi还是移动网络?其他应用加载数据的速度有多快?
也就是说,不要使用那么多 ArrayList 对象,具有自定义容器类型的单个数组列表(即 Ticket 对象具有价格和日期,无需具有价格数组和日期数组)。
检查您的内存使用情况,通常如果速度很慢,您会产生大量垃圾。 (在日志中寻找GC)
对不会更改的字符串参数使用final 关键字。所以setString(final String s) 而不是setString(String s)。这应该可以防止字符串在作为参数传递时被重复。
如果可以的话,使用 JSON 而不是 XML,它更轻量级。
在您进行任何重大更改后,再次profile your code
【讨论】:
final 不会影响运行时的任何内容。 (无论有没有final 参数修饰符,编译方法的字节码都是相同的。)无论如何,字符串在作为参数传递时永远不会重复;该方法接收对调用代码中存在的相同 String 对象的引用。也许您正在考虑另一种语言?