数据库与文件(性能)

时间:2015-05-08 08:46:45

标签: c++ database performance file filesystems

我的C ++程序必须读取有关256张图片一次的信息。信息很简单:每个图像的路径和一些浮点数。

我不需要任何类型的并发访问。此外,我不在乎编写,删除或更新信息,我也不必进行任何复杂的查询。这是我的管道:

  1. 阅读有关一张图片的信息。
  2. 将该信息存储在对象上。
  3. 使用这些信息进行一些计算。
  4. 删除对象。
  5. 下一张图片。
  6. 我可以使用256个文件(每个图像具有相同的信息),1个包含所有信息的文件或PostgreSQL数据库。 什么会更快?

1 个答案:

答案 0 :(得分:0)

你的问题'哪个会更快'是棘手的,因为性能取决于很多不同的因素,包括操作系统,数据库或文件系统是否与你的应用程序在同一台机器上,图像的大小等等。我会猜测你可以找到一些组合,如果你足够努力,可以让你的选择更快。

话虽如此,如果一切都在同一台机器上运行,那么基于文件的方法看起来比数据库更直观,因为数据库通常提供更多功能,因此做更多工作(而不仅仅是服务请求)但在背景中也是如此,所以必须使用更多的计算能力。

同样,单个文件比多个文件更有效率似乎是直观的,因为它可以保存与多个文件关联的打开(并在必要时关闭)操作。但是,再次提供绝对答案很难,因为打开和关闭多个文件可能是某些操作系统已优化的常见用例,因此使其与仅使用单个文件一样快(甚至更快)。

如果性能对您的解决方案非常重要,则很难避免必须对目标部署系统进行一些比较测试。