In general I suspect it's the usual "NumPy arrays are fast, everything else you better be getting a sufficiently large boost from the low-level code to justify conversion".
For the thing I prototyped in Rust, it was wrapping the `ahocorasick` crate which was in fact faster than `pyahocorasick` which is written in C or Cython or something. Both have similar conversion costs, probably, so it came down to "for lots of data the Rust version was faster".
Or just be sure to enable the DFA option if you can afford it. It looks like the Python library is just the standard NFA algorithm.
Next step is trying alternative approach, but if that alternative doesn't work I'm going to see about wrapping your package for Python.
Thanks for all your work on it!
E.g. `df["column_name"].values` will you get you a NumPy array.