对于少量信息,java文件i / o或derby,哪个更快?

时间:2008-11-06 20:28:52

标签: java file performance io derby

我正在用java编写一个小代理,它将与其他代理进行游戏。我希望在程序运行之间保持少量状态(最多可能大约1kb),这样我就可以尝试根据过去的成功来调整代理的性能。从本质上讲,我将在每场比赛开始时阅读少量数据并在最后写下少量数据。看起来我有2个选项,文件I / O或德比。两者都有速度优势吗?或者这么少的数据真的不重要吗?

2 个答案:

答案 0 :(得分:2)

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

尽管我喜欢将每个问题都适用于数据库解决方案,但我认为这不是很实用。除非您对数据库特定功能有特殊需求,否则您将通过使用数据库来引入大量开销,复杂性和维护问题。

您可能真正想要使用数据库的唯一区域是,如果您有很多小对象/行,并且经常对数据执行排序和过滤。但即便如此,你仍然可以保留十几个内存中的有序列表,并以更少的资源获得更好的性能,而且不会让数据库头疼。

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

答案 1 :(得分:1)

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

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

但由于这是一小部分数据,我认为这无关紧要。