2017-10-06 57 views
1

我在C++中創建了一個記事本++插件,它在日誌文件中的關鍵字之間進行搜索並在該關鍵字之間複製整個數據(該關鍵字在文件或根本不會發生)。 這裏是我的代碼[在文本文件中搜索] [在C++中的Notepad ++插件]

 std::ifstream in(curr_file_path); 
     std::string search("TEXT TO SEARCH"); 
    while (std::getline(in, line)) 
    { 
     r_val = line.find(search); 
     if (r_val != -1) 
     { 
      f_match = r_val; 
      r_val = -1; 
      while (r_val == -1) 
      { 
       std::getline(in, line); 
       r_val = line.find(search); 
       for (int i = 0; i < line.size(); i++) 
       { 
        pDestText[textLen++] = line[i]; 

       } 
      } 
      pDestText[textLen - 27] = '\0'; 
      break; 
     } 
    } 
} 

搜索要searched.Input文件中的字符串是我的查詢是作爲日誌文件是非常大的,它需要時間約5 seconds.Can我優化這 。我正在考慮的一個優化是跳過第一個50000行代碼,因爲我確信我所看到的文本不會在第一個50000行中出現。但是有沒有更好的優化方法。如果沒有,任何人都可以告訴如何跳過第一個50000如果代碼行少於50000行,則會發出錯誤。

+0

如果IO是瓶頸,請考慮此https://stackoverflow.com/a/4558426/7132300 – algrid

回答

0

在尋找我建議你使用,將滿足您的需求

http://bigocheatsheet.com/

算法嘗試看看這個鏈接,因爲這可以幫助你在選什麼。對於你將使用的算法總是有優點和缺點。你也可以結合使用兩種或兩種以上的算法,甚至可以自己創建,如果你認爲它會比列出的更優化。