【问题标题】:Which is faster for a small amount of information, java file i/o or derby?对于少量信息,java 文件 i/o 或 derby 哪个更快?
【发布时间】:2010-09-21 04:07:20
【问题描述】:

我正在用 java 编写一个小代理,它将与其他代理玩游戏。我想在程序运行之间保留少量状态(最多可能约为 1kb),以便我可以尝试根据过去的成功调整代理的性能。本质上,我会在每场比赛开始时读取少量数据并在结束时写入少量数据。似乎我有 2 个选项,文件 I/O 或 derby。两者都有速度优势吗?或者对于这么少量的数据真的不重要吗?

【问题讨论】:

    标签: java file performance io derby


    【解决方案1】:

    考虑到这些对象可能因文件大小而异,并且您的计算机规格(总线速度、HD 速度)会影响这一点,唯一确定的方法是编写您自己的基准测试。只需创建一个简单的 for 循环,从 1 数到 1000,然后一遍遍地读取循环内的文件(但不要创建和销毁循环内的对象,只关注读取部分)。

    当然,整个练习都带有预优化的味道,这可能会导致不良的编码习惯。只需以最易读、最简单的方式编写代码,如果出现速度问题,请根据需要进行重构。

    但既然是少量数据,我会说没关系。

    【讨论】:

    • 是的,我就是这么想的。
    【解决方案2】:

    对于 1kb 的数据,最好使用标准文件 IO。最有可能的是,您可以将整个对象树序列化到磁盘并在再次启动时进行反序列化。如果你想变得花哨,你可以使用 JAXB 序列化为 XML 而不是二进制文件。

    尽管我喜欢将每个问题都应用到数据库解决方案中,但我认为这在这里并不实用。除非您对数据库特定功能有特殊需求,否则使用数据库会带来很多开销、复杂性和维护问题。

    您可能真正想要使用数据库的唯一领域是您有很多小对象/行,并且您经常对数据执行排序和过滤。但即便如此,您也可以保留十几个内存中的有序列表,并以更少的资源获得更好的性能,而不必担心数据库的问题。

    如果您真的认为在这种情况下需要数据库,请考虑 HSQL。我不认为它是一个真正的数据库,但它是一个可以持久保存到文件的内存数据库。低开销、低复杂性和相对较少的故障点。另外,如果您需要编辑持久数据,您可以使用文本编辑器进行。德比不能这么说。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 2014-11-04
      • 2013-09-22
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多