0
我正在使用美國國家語料庫獲取英語單詞的頻率。 文件結構如下(這是一個很大的文件,〜8 MB):Java在ANC中緩慢搜索(大文件)
Word1 Lemma1 Pos1 Frequency1
Word2 Lemma2 Pos2 Frequency2
Word3 Lemma3 Pos3 Frequency3
,這裏是我的Java類,但它非常慢......我該怎麼改變它加快步伐? (我想找到與特定詞的頻率)
public static int frequency (String word) throws Exception {
int ft=0;
int fc=0;
int exit=0;
String frow;
String[] separated = new String[10];
String fwordC = "...";
String fwordP = "...";
Scanner fscan = new Scanner(new File("./ANC-all-lemma.data"));
fscan.useDelimiter("\n");
while(fscan.hasNext()){
frow = fscan.next();
separated = frow.split(" ");
separated[0]= separated[0].replaceAll("(\\r|\\n)", "");
fwordC = separated[0]; //set current word
if (fwordC.equalsIgnoreCase(word)) {
System.out.println("Found!!!");
return(separated[3]);
}
}
}
感謝一大堆!
爲什麼不將該文件加載到配置單元表或豬關係並執行查詢? Apache Hive(http://hive.apache.org/) Apache Pig(http://pig.apache.org/) –
對於[線程](http://www.codeproject.com/)你有什麼要求嗎?文章/ 616109/Java的線程教程)?你需要將你的大工作分成[小部分](http://www.codeproject.com/Articles/616115/Java-Thread-Example#ai),實際上爲每一行運行線程 – 2013-07-13 14:55:32
8 MB是小文件這些日子甚至還有電話。你可以閱讀每一行,只分割以你想要的字符串開頭的那一行。如果將數據存儲在內存中並查找Map,速度會更快。查看地圖的時間不到一秒鐘。 –