2008-11-06 36 views
1

我正在寫一個java中的小代理,它將與其他代理玩遊戲。我希望在程序運行之間保持少量的狀態(最多大約1kb),以便根據過去的成功調整代理的性能。基本上,我將在每場比賽開始時讀取少量數據,並在最後寫入少量數據。看起來我有2個選項,文件I/O或德比。有沒有速度優勢?或者這對於如此少量的數據無關緊要嗎?對於少量信息,java文件I/O或德比,哪個更快?

回答

1

考慮到這些對象可以根據文件大小以及計算機的規格(總線速度,高清速度)而變化,唯一確定的方法就是編寫自己的基準測試。只需創建一個簡單的for循環,從1到1000計數,然後一遍又一遍地讀取循環內的文件(但不要創建和銷燬循環內的對象,只關注讀取部分)。

當然這整個練習反映了預優化,這可能導致錯誤的編碼習慣。只需以最易讀,簡單的方式編寫代碼,並且如果存在速度問題,則可以根據需要重構。

但是由於這是少量的數據,我會說這沒關係。

+0

是的,這就是我想象的那種。 – 2008-11-06 20:42:09

2

對於1kb的數據,最好使用標準文件IO。最有可能的是,您可以將整個對象樹序列化到磁盤,並在再次啓動時進行反序列化。如果你想變得有趣,你可以使用JAXB序列化爲XML而不是二進制文件。

儘管我很喜歡將每個問題都適合於數據庫解決方案,但我認爲這不是很實際。除非您對數據庫特定功能有特殊需求,否則您會通過使用數據庫引入大量開銷,複雜性和維護問題。

您可能真的想要使用數據庫的唯一領域是如果您有很多小對象/行,並且您經常對數據執行排序和篩選。但即使如此,您也可能會保留十幾個內存有序列表,並以更少的資源獲得更好的性能,並且不會遇到數據庫頭痛的問題。

如果你真的認爲你需要在這種情況下的數據庫,考慮HSQL。我不認爲它是一個真正的數據庫,但它是一個可以保存到文件的內存數據庫。開銷低,複雜度低,故障點相對較少。另外,如果你需要編輯持久數據,你可以使用文本編輯器來完成。不能說德比。