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.
While pipelining is thought to increase performance over an unpipelined core in the number of stages, in reality, most codes cannot perform this very well.