我有一个小程序可以读取包含类 C 宏的输入文件。该处理分两遍进行:第一遍搜索宏定义并存储它们,第二遍搜索宏调用并扩展/替换它们。
这一切都很好,但它很耗时。目前,这就是我的做法:
foreach token in file:
foreach macro in macroDefinitions:
if token equals macro.name:
expand()
endif
end foreach
endforeach
在这个伪示例中,“token”是源文件中的一个单词,“macro”是第一次传递的宏定义。大约有 20 000 个宏定义和 1800 个输入文件,总共需要处理大约 600 000 行(每行被分成 n 个标记)。这意味着总比较计数是(令牌计数)*(宏定义计数)。我怎样才能加快速度?我错过了什么,还是我真的必须做所有这些比较?
有关其他信息,标记是 String[] 数组中的字符串,宏是 ArrayList 类型的列表中的宏对象。我可以用其他类型的数据结构加快这个过程吗?