Hello!
2015-04-28 19:26 GMT+08:00 杨阳:
> 问几个关于正则的问题,ngx.re.find与ngx.re.match都能判断正则是否匹配,那这两个效率对比如何呢?
前者一般效率更高因为前者不用构造 match 表。其实你自己写两组循环比较一下执行时间就好了。
> 另外,通过火焰图表明,ngx.re.find都会先对正则先进行pcre_complie
> 过程,是不是意味着先针对pattern先做好pcre_complie,就不需要每次都这么做?
你应该自己已经发现了 o 这个正则选项来启用正则编译缓存了。
> ngx.re.find的option如果是oij,那么正常情况下正则只会编译一次,但是线上的环境中会出现有些很复杂
> 的正则并不能进行一次编译缓存,想问下对于o这个选项有什么其他条件吗?
没看出来正则本身的复杂度和是否能进行一次编译缓存之间有什么因果关系。ngx.re 的编译缓存是有缓存数目上限的。如果你启用了
lua-resty-core 的话,该缓存还带有 LRU 自动剔除策略。
Regards,
-agentzh