簡體   English   中英

用Java計算100K單詞的頻率應花費多少時間

[英]How much time should take to count the frequency of 100K words in Java

我必須閱讀大約10萬個單詞的文本文件,並使用每個單詞的頻率創建一個HashMap。 到目前為止,我執行的代碼大約需要15到20分鍾才能執行,我猜我在做一些可怕的錯誤。 這樣的任務的執行時間是多少?

這是我正在使用的代碼

    Scanner scanner = new Scanner(new FileReader("myFile.txt"));
    HashMap<String, Integer> wordFrequencies = new HashMap<>();
    while (scanner.hasNextLine()) {
        wordFrequencies.merge(scanner.next(), 1, (a, b) -> a + b);
    }
    return wordFrequencies;

這應該是無時間的。 例如,如果只執行一次,則幾乎不會注意到它所花費的時間。 如果要花費20分鍾,那么您每秒將處理大約100個單詞,即使您的單詞確實很長,這也是令人討厭的性能。

BufferedReader的Javadoc中(添加了重點):

通常,由讀取器發出的每個讀取請求都會導致對基礎字符或字節流進行相應的讀取請求。 因此,建議將BufferedReader包裝在其read()操作可能會很昂貴的任何Reader 周圍 ,例如FileReaders和InputStreamReaders。

嘗試將FileReader包裝在BufferedReader

Scanner scanner = new Scanner(new BufferedReader(new FileReader("myFile.txt")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM