第三次寒假作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2022OOP |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2022OOP/homework/12442 |
这个作业的目标 | <对第二次作业修改> |
作业正文 | 如下 |
其他参考文献 | 计算时间方法 |
首先是负责数据匹配的函数改进
int match(long long in1, long long in2, int in3, int in4, int in5, long long aup,
long long adown, long long bup, long long bdown, int cup, int cdown, int dup,
int ddown, int eup, int edown, int i) {
if (!(in1 >= adown && in1 <= aup))//匹配源IP地址
return -1;
if (!(in2 >= bdown && in2 <= bup))//匹配目的IP地址
return -1;
if (!(in3 >= cdown && in3 <= cup))//匹配源端口
return -1;
if (!(in4 >= ddown && in4 <= dup))//匹配目的端口
return -1;
if (!(in5 >= edown && in5 <= eup) && (edown != 0 || eup != 0)) //匹配协议
return -1;
return i;
}
我优化了匹配的流程。原来的函数是匹配全部数据进行比对后返回一个值。现在当第一个数据匹配失败时直接返回-1,后面数据也是如此。节省了时间。
然后我将匹配的全流程封装成一个函数
int main() {
char file1[10], file2[10]; //定义字符串存放数据集和规则集名称
scanf("%s %s", file2, file1); //读取规则集和数据集名称
packet_classify(file1, file2);
return 0;
}
这样主函数就比较简洁
此时运行时间如下
计算时间参考csdn上的博客。
之后我又把IP地址转化的函数进行拆分,让运行时间减小了0.02s。