Jon*_*hov 12 java xml android xml-deserialization simple-framework
我正在使用Simple XML库来处理Android应用程序中的XML文件.这些文件可以变得非常大 - 大约1Mb,并且可以非常深入地嵌套,因此它们相当复杂.
当应用程序通过Simple API加载其中一个文件时,最多可能需要30秒才能完成.目前我正在将FileInputStream传递给Simple的Persister类的[read(Class,InputStream)] [2]方法.实际上,它只读取XML节点并将数据映射到模型对象的实例,从而在内存中复制XML树结构.
我的问题是如何改善Android的性能?我目前的想法是将文件的内容读入字节数组,并将ByteArrayInputStream传递给Persister的read方法.我想处理文件的时间会更快,但我不确定节省的时间是否会被首先读取整个文件所花费的时间所抵消.内存限制也可能是一个问题.
这是傻瓜差事吗?在这种情况下,我还能做些什么来提高性能吗?如果不是,我将不得不求助于改进用户对加载文件的进度的反馈.
一些警告:
1)我无法更改我正在使用的XML库 - 有问题的代码是在桌面,移动和Web应用程序中使用的"引擎"的一部分.改变它的开销对于时间来说太过分了.
2)数据文件由用户创建,因此我无法控制嵌套的大小/深度.
ng.*_*ng. 16
好吧,你可以做很多事情来改善这一点.他们来了.
1)在Android上你应该至少使用2.5.2版本,但理想情况下是2.5.3,因为它使用KXML,它在Android上更快,内存效率更高.
2)Simple将动态构建对象图,这意味着它将需要加载尚未加载的类,并使用反射基于其注释为每个类构建模式.因此,首次使用将始终是最昂贵的.重复使用相同的persister实例将快许多倍.所以尽量避免多个persister实例,如果可能的话只使用一个.
3)尝试测量直接读取文件所用的时间,而不使用Simple XML库.多久时间?如果它需要永远,那么你知道这里的性能是由于文件系统.尝试使用BufferedInputStream来提高性能.
4)如果您仍然发现任何问题,请在邮件列表中提出.
编辑: Android在注释处理方面存在一些问题https://code.google.com/p/android/issues/detail?id=7811,简单的2.6.6修复已针对这些问题实施了解决方法.可以观察到性能提高10倍.
归档时间: |
|
查看次数: |
2659 次 |
最近记录: |