這是我的類TagVertex包含讀取標籤值的一個方法=字符串從文本文件在這種情況下,最好使用數據庫或讀取文件來提高性能?
並返回
public class TagVertex extends Vertex<String> {
@Override
public String computeVertexValue() {
String s = null;
try {
BufferedReader bf = new BufferedReader(new FileReader(MyDataSource.TagList1K));
for(int i = 1; i < Integer.parseInt(this.getVertexId().substring(this.getVertexId().indexOf("g")+1)); i++){
bf.readLine();
}
s= bf.readLine();
bf.close();
} catch (Exception e) {
e.printStackTrace();
}
this.setVertexValue(s);
return s;
}
方法被調用1000次==>文件被讀1000次太
最好使用數據庫而不是文本文件?
個人而言,我只希望緩存結果所有文件+寫一段代碼來監視文件系統的變化和更新緩存文件時更改(新的Java 7 API) – radai 2013-04-24 15:09:14
你能解釋更多的想法? – nawara 2013-04-24 15:14:03
基本上在你的案例中,頂點值是存儲在一個文件/文件中的。讀取所有文件並在內存中保存值的HashMap或其他內容。假設你有足夠的內存(在大多數機器上應該可以很好地擴展到大約1M條),它是最快的解決方案。現在你只需要擔心文件被改變/編輯 - 如果這是可能的。如果可能的話,你需要觀察文件的變化,如果它改變了刷新並重新加載你的HashMap。看看這裏 - http://e-blog-java.blogspot.com/2011/03/how-to-watch-file-system-for-changes-in.html – radai 2013-04-24 15:18:47