将 180K 记录引入应用的最佳方法:核心数据:是吗?CSV vs XML



我用少量的测试数据(线索和答案)构建了一个应用程序,运行良好。 现在我需要考虑引入一整套线索和答案,大约有18万条记录(这是一个文字游戏)。 我当然担心速度和内存使用。 环顾电子管间和我的图书馆,我得出的结论是,这可能是核心数据的工作。 但是,在这种方法中,我想我可以将其作为csv或xml引入(我可以使用脚本语言从原始数据中创建任何一个)。 我找到了一些关于如何处理每个案例的资源。 我不知道的是关于整体速度和使用csv与xml时可能期望的其他问题的任何信息。 csv 文件约为 3.6 Mb,数据类型为字符串。

我知道这很危险,接近于一个非问题,但我需要一些建议,因为任何一种方法都需要大量的编码承诺。所以这里有一些问题:

  1. 对于这种大小和特征的文件,人们会期望 csv 还是XML是更好的方法吗? 还有其他人吗格式/协议/策略更有意义?
  2. 我关注核心数据是对的吗?

也许我应该在这里扔一些假代码,这样系统就不会一直警告我问一个主观问题。 但我必须尝试! 感谢您的任何指导。 感谢讨论的链接。

至于文件大小,与xml文件相比,CSV将始终较小,因为它仅包含ASCII格式的原始数据。 请考虑以下 3 行和 3 列。

1、列 2、列 3

1、2、3

4、5、6

7、8、9

与它的XML对应部分相比,它甚至不包括架构信息。 它也是 ascii 格式,但 rowX 和 ColumnX 必须在整个文件中重复多次。 压缩当然可以帮助解决这个问题,但我猜即使压缩,CSV仍然会更小。

<root>
    <row1>
        <Column1>1</Column1>
        <Column2>2</Column2>
        <Column3>3</Column3>
    </row1>
    <row2>
        <Column1>4</Column1>
        <Column2>5</Column2>
        <Column3>6</Column3>
    </row2>
    <row3>
        <Column1>7</Column1>
        <Column2>8</Column2>
        <Column3>9</Column3>
    </row3>
</root>

至于你的其他问题,对不起,我帮不上忙。

这足够大,以至于 I/O 时差会很明显,CSV 在哪里 - 什么? 小 10 倍? 与读取它的差异相比,处理时间差异(以较快者为准)可以忽略不计。 CSV应该更快,在I/O之外也是如此。

是否使用核心数据取决于您希望利用核心数据的哪些功能。 我猜唯一的一个是查询,这可能是值得的,尽管如果它只是从线索到答案的简单映射,您可能只想将整个内容从 CSV 文件读取到 NSMutableDictionary 中。 访问会更快。

最新更新