a geometric growth pattern each of the 16 threads will first receive data chunks of 1 item for processing in a first stage then receive data chunks of 2 items for processing in a second stage and then receive data chunks of 4 items for processing in a third stage the total number items processed during the first three stages is assuming that processing each item includes a runtime of approximately 1 unit of time the total units of runtime is in order to complete processing the data stream the next available thread is assigned 8 items in a fourth stage for processing in approximately 8 units of time while the remaining 15 threads are idle accordingly under the geometric growth pattern 120 items are processed in 15 units of time if instead of a using a geometric growth pattern data partitioner 302 assigned 8 items to each of the 16 threads because for the amount of runtime used to process the data stream 306 would only be approximately 8 units of time thus applying a geometric growth pattern to medium sized data streams can result in performance degradations of approximately fifty percent of optimal simply due to an unfortunate selection of chunk size the root of the problem is that the geometric growth pattern increases too quickly for medium sized data stream thus a growth function that increases to 128 more slowly than the geometric growth pattern is chosen for data streams 306 of medium length one such function that grows more slowly than the geometric sequence can be expressed as the variable k is chosen in the range 1 lt k lt.