【问题标题】:How efficient is reading a big xml file from sdcard?从 sdcard 读取大 xml 文件的效率如何?
【发布时间】:2012-12-31 06:04:31
【问题描述】:

我有一个很大的 XML 文件(6000 行,1.4MB)存储在/mnt/sdcard 文件夹中。我想从 XML 文件中读取一个节点以从我的 Android 应用程序中的文件中获取版本。

由于文件很大,而且存储在 sdcard 中,那么读取 XML 会不会降低性能?

【问题讨论】:

  • 试试看并计时?虽然不是 XML,但我使用 SD 卡上的 120MB OSM 映射文件编写了一个应用程序,它运行得非常好。

标签: android xml performance


【解决方案1】:

是的,读取和解析 1.4 MB 的 XML 需要一些时间(根据我的经验,我估计需要 0.1 到 2 秒)。多少取决于你如何做,是否可以接受取决于你认为可以接受的内容。我建议您自己进行基准测试。

此外,使用 SAX 之类的解析器,一旦您获得数据,它就会停止读取。这样,如果版本通常在开头,则不需要读取和解析整个文件。如果你知道版本总是第一行,性能可能会很好。

【讨论】:

  • 版本位于 xml 的最低行。 This 是我的 xml,我对 <Item Type="ProviderXml" 的版本感兴趣。
  • 那么我建议仍然使用 SAX,当然只读取一次值然后缓存它。如果这太慢并且您知道您的 XML 具有精确的格式并且您知道您的值在最后 n KB 中,那么您可以读取最后 n KB 并手动解析它(丑陋的 hack)。
【解决方案2】:

如果你只需要读取一个节点,为什么不使用XPath

与使用 SAX 或 DOM 进行解析相比,它可能会或可能不会提供性能加速(您需要自己针对您的情况进行基准测试),但它可能会简化您的代码。

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多