ENH : less allocation and less gradient computation

- Saved allocations by using the Copy() Method in VEctorArray
- Saved one gradient by exiting before the end of the loop if the displacement or iteration condition are enough