我正在寫一個java中的小代理,它將與其他代理玩遊戲。我希望在程序運行之間保持少量的狀態(最多大約1kb),以便根據過去的成功調整代理的性能。基本上,我將在每場比賽開始時讀取少量數據,並在最後寫入少量數據。看起來我有2個選項,文件I/O或德比。有沒有速度優勢?或者這對於如此少量的數據無關緊要嗎?對於少量信息,java文件I/O或德比,哪個更快?
1
A
回答
1
考慮到這些對象可以根據文件大小以及計算機的規格(總線速度,高清速度)而變化,唯一確定的方法就是編寫自己的基準測試。只需創建一個簡單的for循環,從1到1000計數,然後一遍又一遍地讀取循環內的文件(但不要創建和銷燬循環內的對象,只關注讀取部分)。
當然這整個練習反映了預優化,這可能導致錯誤的編碼習慣。只需以最易讀,簡單的方式編寫代碼,並且如果存在速度問題,則可以根據需要重構。
但是由於這是少量的數據,我會說這沒關係。
2
對於1kb的數據,最好使用標準文件IO。最有可能的是,您可以將整個對象樹序列化到磁盤,並在再次啓動時進行反序列化。如果你想變得有趣,你可以使用JAXB序列化爲XML而不是二進制文件。
儘管我很喜歡將每個問題都適合於數據庫解決方案,但我認爲這不是很實際。除非您對數據庫特定功能有特殊需求,否則您會通過使用數據庫引入大量開銷,複雜性和維護問題。
您可能真的想要使用數據庫的唯一領域是如果您有很多小對象/行,並且您經常對數據執行排序和篩選。但即使如此,您也可能會保留十幾個內存有序列表,並以更少的資源獲得更好的性能,並且不會遇到數據庫頭痛的問題。
如果你真的認爲你需要在這種情況下的數據庫,考慮HSQL。我不認爲它是一個真正的數據庫,但它是一個可以保存到文件的內存數據庫。開銷低,複雜度低,故障點相對較少。另外,如果你需要編輯持久數據,你可以使用文本編輯器來完成。不能說德比。
相關問題
- 1. 對於緩存,文件系統或Memcached,哪個更快/更好?
- 2. Java:哪個更快,數組或對象?
- 3. 哪個更快?映射或減少條件FN或進入?
- 4. Java Set - 哪個更快Set.add()或Set.addAll()?
- 5. 哪一個更快的重寫或基於文件夾的URL?
- 6. 比較兩個文件或爲什麼Java中的代碼比С++更快?
- 7. 哪個更快 - WebSockets或Ajax?
- 8. 哪個更快,GDI +或libpng?
- 9. 哪個更快? Statement或PreparedStatement
- 10. 哪個更快? NSXMLParser或KissXML
- 11. 哪個更快,XPath或Regexp?
- 12. 對於小型Web項目(MySQL或Oracle)哪個更快?
- 13. hash_map和map哪個更快?少於10000個項目
- 14. 信號量和互斥量,哪一個更快?
- 15. MySQL的對Java德比CURRENT_TIMESTAMP
- 16. 對於SSIS,表格上的視圖或條件分割,哪個更快?
- 17. Java IO對於位於類路徑上或離開類路徑的文件
- 18. 哪些文化信息用於字符串比較?
- 19. 更新或刪除哪個更快?
- 20. 哪個更快?插入或更新?
- 21. 哪一個更快後增量或預增量?
- 22. 哪個音頻文件流會更快?
- 23. 寫入文件時哪一個更快?
- 24. 對於Java,哪一個更有用Netbeans或Eclipse?
- 25. 對於我的Ruby on Rails或Java EE,哪個更好?
- 26. 哪一個更快/更好strcasecmp()或等於運算符?
- 27. 用於2個或更多文本文件比較的JAVA程序
- 28. 對於x86-64,哪種更快,imm64或m64?
- 29. 哪個更快?
- 30. 。哪個更快?
是的,這就是我想象的那種。 – 2008-11-06 20:42:09