代码之家  ›  专栏  ›  技术社区  ›  Yijinsei

C++与FSCAN或数据库

  •  2
  • Yijinsei  · 技术社区  · 16 年前

    我正在尝试在 C++ .

    我已经完成了特征提取,现在正试图保存大量的数字。我有2个实现的想法,一个是将数据保存到二进制文件中,以减少计算的开销,或者我可以使用数据库来保存信息。

    二进制文件读写速度很快,但很难访问,虽然数据库似乎是一个更容易使用的接口,但我不确定性能是否足够快。

    你们是否有过将fsream或数据库作为快速持久存储的选择的经验?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Björn Pollex    16 年前

    你可以用 SQLite . 它基本上提供了对本地文件的数据库样式访问。您也可以用它创建内存中的数据库,但我不知道是否可以持久化这些数据库。

    此外,这里的最佳选择在很大程度上取决于您的访问模式。如果只是顺序写入和顺序读取,那么二进制文件是最好的解决方案。

        2
  •  0
  •   anon    16 年前

    如果您真的想要速度,可以考虑使用C风格的I/O函数,如fopen(0,fread()等。由于许多原因,这些函数通常比iostreams更快。

        3
  •  0
  •   Dirk    16 年前

    对我来说,使用像sqlite这样的数据库的好处是我的数据具有独立的格式,并且能够使用SQL查询数据。

    事实证明,将数据写入sqlite数据库要比将其写入简单的csv文本文件慢得多。

    这取决于您以后要对数据做什么?如果您只是想再次阅读它并做一些事情,请使用fstream(或c-style I/O),如建议的那样。如果您想要查询数据并且只获取特定的数据,请使用sqlite。

    您还必须考虑如何将数据存储在数据库中。如果要将数据存储为一个BLOB,可能最终会失去SQL和牺牲性能的好处。

        4
  •  0
  •   Draco Ater    16 年前

    我正在编写一个音频识别程序在C++中,我现在使用PostgreSQL进行数据存储。所以我也对答案感兴趣。 我的建议是,数据存储应该根据识别算法来选择。如果将图像与保存的图像1乘1进行比较,那么二进制文件似乎更快。但是,如果在识别过程中同时处理多个图像,则数据库可能是更快的解决方案。