While pipelining can in theory increase performance over an unpipelined core by a factor of the number of stages (assuming the clock frequency also scales with the number of stages), in reality, most code does not allow for ideal execution.
Theoretically, pipelining can increase performance over an unpipelined core by the number of stages. But in reality, most code don't allow ideal execution.