我正在使用 Simple XML 库 处理 Android 应用中的XML文件。这些文件可能会相当大 - 大约1MB,并且可以非常深度嵌套,因此它们相当复杂。
当应用程序通过 Simple API 加载其中一个文件时,可能需要最多30秒才能完成。目前,我将 FileInputStream 传递到 Simple 的 Persister 类的 [read(Class, InputStream)][2] 方法中。实际上,它只是读取XML节点并将数据映射到我的模型对象的实例中,在内存中复制XML树结构。
那么我的问题是如何在Android上提高性能?我目前的想法是将文件内容读入字节数组中,并将 ByteArrayInputStream 传递给 Persister 的读取方法。我想处理文件的时间会更快,但我不确定节省的时间是否会被先读取整个文件所需的时间所抵消。另外,内存限制可能是一个问题。
这是愚蠢的事情吗?在这种情况下,还有其他任何事情可以增加性能吗?如果没有,我只能改进向用户反馈文件加载进度的方式。
一些注意事项:
1)我不能更改正在使用的XML库 - 相关代码是跨桌面、移动和Web应用程序使用的“引擎”部分。目前修改它的开销太大。
2)数据文件由用户创建,因此我无法控制其大小/嵌套深度。
当应用程序通过 Simple API 加载其中一个文件时,可能需要最多30秒才能完成。目前,我将 FileInputStream 传递到 Simple 的 Persister 类的 [read(Class, InputStream)][2] 方法中。实际上,它只是读取XML节点并将数据映射到我的模型对象的实例中,在内存中复制XML树结构。
那么我的问题是如何在Android上提高性能?我目前的想法是将文件内容读入字节数组中,并将 ByteArrayInputStream 传递给 Persister 的读取方法。我想处理文件的时间会更快,但我不确定节省的时间是否会被先读取整个文件所需的时间所抵消。另外,内存限制可能是一个问题。
这是愚蠢的事情吗?在这种情况下,还有其他任何事情可以增加性能吗?如果没有,我只能改进向用户反馈文件加载进度的方式。
一些注意事项:
1)我不能更改正在使用的XML库 - 相关代码是跨桌面、移动和Web应用程序使用的“引擎”部分。目前修改它的开销太大。
2)数据文件由用户创建,因此我无法控制其大小/嵌套深度。