作者:PAISONG_675 | 来源:互联网 | 2023-05-25 09:57
我必须迭代一个包含大约100M行的日志文件.我必须为多个日志执行此操作.平均线长为110个字符.
目前我正在循环查看可能的匹配列表.我想知道是否有更好的方法吗?
char *in_array(char *car) {
// longer list than this...
char *carlist[] =
{
"Avalon",
"Azera",
"Cayenne",
"Civic",
"Corolla",
"Elantra",
"F-150",
"Hilux",
"Lexus LS",
"Rav 4",
"Sienna",
// etc...
};
char *match;
int i;
int n = sizeof(carlist)/sizeof(carlist[0]);
for(i = 0; i
Ben Voigt..
5
DFA(确定性有限自动机,多个自动机)可以比单独依次测试每个模式更快地匹配字符串与多个模式.
分析器生成器擅长自动构建DFA表.
缺点是当模式列表发生变化时必须重建DFA ...但由于您的模式列表当前是硬编码为数组,因此对您来说不应该有问题.
由于您使用的是C,flex
因此是一个很好的工具.
1> Ben Voigt..:
DFA(确定性有限自动机,多个自动机)可以比单独依次测试每个模式更快地匹配字符串与多个模式.
分析器生成器擅长自动构建DFA表.
缺点是当模式列表发生变化时必须重建DFA ...但由于您的模式列表当前是硬编码为数组,因此对您来说不应该有问题.
由于您使用的是C,flex
因此是一个很好的工具.