I don't know your use case, but if startup performance is really important for you, I would recomment to do the JIT compilation on a separate thread, which passes back the optimized patterns to the main thread one-by-one. This way your application gradually become faster. This may not help if you frequenlty restart your application. You can also try to compile only slow patterns, usually 10% of patterns takes 90% of runtime.
It is also possible that the JIT does not help you. No solution is perfect, everything has advantages and disadvantages. Regards, Zoltan ND <[email protected]> írta: >On 2013-03-25 08:57, Zoltán Herczeg wrote:> > This is an exponential case for the code generator.>The code generator > > optimize these patterns one-by-one, and this process requires a lot of > > time and an enormous stack space. Where do you use such pattern? Can't > > you use a better pattern?> >> It's not a real pattern.> My application hardly uses callouts and all of backtracking verbs. Some > time ago I have a hope that if JIT starts to support callouts and all > backtracking verbs then it speeds up my application. Now You did this > changes to JIT engine (thanks alot). But when my application starts with > this PCRE build it deal all things much slo-o-o-o-wly.> I knows that JIT compilation time is much longer then interpreter. But I > be sure that this is not a problem because regular expressions can be > precompiled. I did't know nothing about PCRE can't precompile JIT data. > And only when I see a slowing of my application I found in documentation > this fact. I'm very disappointed...> > > > Ahead-of-time (AOT) compilation is not really useful in my experiences, > > because pointers are not known at compile time, and you need to replace > > them by costly memory reads and writes.> Are there this memory reads/writes more costly then JIT-recompiling?> -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev
