Parse :: RecDescent会随着时间的推移而减慢

时间:2015-01-16 18:13:59

标签: perl parsing acl parse-recdescent

我编写了一个解析器,它从Cisco IOS配置文件中提取一些功能(对象,对象组,名称,接口,访问组,nat规则,最重要的是访问列表指令)。这一切都运行得非常好但是当我在一个大的配置文件(几千行)上启动时,它变得越来越慢,进入文件的速度越来越慢。实际上,生成给定类型的配置行所花费的时间与解析器已处理的行数成比例地增加。

这一切都非常神秘,因为我可以假设每条线都是独立于之前处理的。引用(对象,对象组和名称)用于解析访问列表,但它们的定义在处理任何访问列表之前进行,因此它们的查找时间不会更改。

在创建解析器的预编译版本之后,我只找到一个在解析单个文件的过程中不断增长的变量:一个名为$thisparser->{linecounter_cache}的哈希,但是刷新不会改变减慢行为的行为

Parse::RecDescent是否有某些方面可以解释这种逐渐减缓的过程?

0 个答案:

没有答案