Fast and flexible packed string matching - Faro, Simone; Külekci, M. Oğuzhan (Journal of discrete algorithms (Amsterdam, Netherlands), 2014)
Searching for all occurrences of a pattern in a text is a fundamental problem in computer science with applications in many other fields, like natural language processing, information retrieval and computational biology. In the last two decades a general trend has appeared trying to exploit the power of the word RAM model to speed-up the performances of classical string matching algorithms. In this model an algorithm operates on words of length w, grouping blocks of characters, and arithmetic and logic operations on the words take one unit of time. In this paper we use specialized word-size packed string matching instructions, based on the Intel streaming SIMD extensions (SSE) technology, to design a very fast string matching algorithm. We evaluate our solution in terms of efficiency, stability and flexibility, where we propose to use the deviation in running time of an algorithm on distinct equal length patterns as a measure of stability. From our experimental results it turns out that, despite their quadratic worst case time complexity, the new presented algorithm becomes the clear winner on the average in many cases, when compared against the most recent and effective algorithms known in literature. •A very fast algorithm based on specialized word-size packed string matching instructions.•The algorithm works using the Intel streaming SIMD extensions (SSE) technology.•We prove the effectiveness of our solution in terms of running times, stability and flexibility.•Our solution turns out to be the fastest algorithm for short patterns in the average case.•We conduct and discuss a wide series of experimental tests.