1. An apparatus comprising: at least one processor; a memory coupled to the at least one processor; a streaming application residing in the memory and executed by the at least one processor, the streaming application comprising a flow graph that includes a plurality of operators that process a plurality of data tuples; and a streams manager residing in the memory and executed by the at least one processor, the streams manager monitoring performance of the streaming application, and when performance of the streaming application needs to be improved, the streams manager requests a cloud manager to provision at least one virtual machine, and when the cloud manager provisions the at least one virtual machine, the streams manager generates using the at least one virtual machine a permutation of a portion of the flow graph that provides logical equivalence of tuples of the portion of the flow graph, runs the permutation in parallel with the portion of the flow graph, determines whether the performance of the permutation exceeds the performance of the portion of the flow graph, and when the performance of the permutation exceeds the performance of the portion of the flow graph, the streams manager modifies the flow graph to replace the portion of the flow graph with the permutation.