1. A system comprising: a non-transitory storage device having embodied therein one or more routines; and one or more processors coupled to the non-transitory storage device and operable to execute the one or more routines, wherein the one or more routines include: a data stream and class definition receive module, which when executed by the one or more processors, receives a data stream having a defined number of data segments and a class definition for the data stream; a data stream partition module, which when executed by the one or more processors, partitions said received data stream into a set of data blocks, wherein each data block comprises N data segments; a data block processing module, which when executed by the one or more processors, processes each data block in parallel, and for each data block, compute the following in parallel: a first integer value based on whether each segment value of the data block forms part of the class definition; a second integer value based on a number of consecutive data segment values that form part of the class definition starting from a left-hand side of the data block; a third integer value based on a maximum number of consecutive data segment values in the data block that form part of the class definition; and a fourth integer value based on a number of consecutive data segment values that form part of the class definition starting from a right-hand side of the data block; a data block integration module, which when executed by the one or more processors, aggregates the first integer value, the second integer value, the third integer value, and the fourth integer value for each data block in a sequential and associative manner to determine, for the received data stream, a maximum number of consecutive data segment values in the received data stream that form part of the class definition, wherein said data block integration module associatively integrates integer values of a first data block of the set of data blocks with integer values of a second data block of the set of data blocks to generate updated integer values that are then processed with integer values of a next data block of the set of data blocks, wherein the first updated integer value represents a result of multiplying the first integer value of said first data block and the first integer value of said second data block and wherein the second updated integer value represents a result of multiplying the first integer value of said first data block and the second integer value of said second data block, and adding the result to the second integer value of said first data block.