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.
In theory, pipelining can increase performance over an unpipelined core. In reality, most code cannot allow ideal execution.