NFAs are cheaper to construct, but have a O(n*m) matching time, where n is the size of the input and m is the size of the state graph. NFAs are often seen as the reasonable middle ground, but i disagree and will argue that NFAs are worse than the other two. they are theoretically “linear”, but in practice they do not perform as well as DFAs (in the average case they are also much slower than backtracking). they spend the complexity in the wrong place - why would i want matching to be slow?! that’s where most of the time is spent. the problem is that m can be arbitrarily large, and putting a large constant of let’s say 1000 on top of n will make matching 1000x slower. just not acceptable for real workloads, the benchmarks speak for themselves here.
Follow me on GitHub.
。体育直播对此有专业解读
Фото: Павел Лисицын / РИА Новости,更多细节参见夫子
Лукашенко назвал дружественной одну страну ЕСЛукашенко: Словакия является дружественной страной для Белоруссии