我有一個小程序讀取包含類C宏的輸入文件。處理過程分兩次進行:第一次搜索宏定義並存儲它們,第二次搜索宏調用並擴展/替換它們。如何加快列表比較/字符串替換?
這一切都很好,但很耗時。目前,這是我要做的事:
foreach token in file:
foreach macro in macroDefinitions:
if token equals macro.name:
expand()
endif
end foreach
endforeach
在這個僞例如,「令牌」是從源文件中的一句話,「宏觀」是從第一通宏定義。大約有20 000個宏定義和1800個輸入文件,總共需要處理約600 000行(並且每行被分成n個令牌)。這意味着總比較計數是(令牌計數)*(宏定義的計數)。我怎麼能加快速度?我錯過了什麼,還是我真的必須做所有這些比較?
有關其他信息,令牌是字符串[]數組中的字符串,而宏是ArrayList類型列表中的宏對象。我可以用其他類型的數據結構來加速進程嗎?
類C宏需要在使用前定義,所以你只需要1次通過文件。 – Dukeling
我有很多文件,並且這些宏被用於交叉文件。:) – manabreak