Yes and no. Personally, I would look at Daniel Lemire's work on SIMD (https://github.com/lemire), but it's not trivial to employ the code.
Intel Hyperscan does not do capturing, and does not tell you where a match started. It is mostly aimed at network traffic scanners, where that is not necessary. This limitation would make it only suitable for very limited situations.
I think the best approach would be to find a library that does good detection of SIMD capabilities of a machine, and then port (or copy) selected parts into the appropriate Perl code guarded by the appropriate SIMD define. Finding a library that has both, (one or more) SIMD-variants and a non-SIMD plain C variant is important here, since otherwise, you will get feature disparity between SIMD and non-SIMD code.
|