In fact, a new instance IS initialized by VM, by putting nil values to each slot and zeroes in case of byte array. What happens next, when you sending #initialize? Yes, you rewriting these values by own, which sound like initial nil-out of all slots was unnecessary. So, in some cases it could be less wasteful (in terms of performance) to just make a copy of existing instance:
SomeClass>>initialize preinitializedInstance := self basicNew initialize. SomeClass>>new ^ preinitializedInstance shallowCopy. and this actually a bit faster , except from, of course if #initialize also creating new objects, then cannot avoid extra initialization step. Also, often you cannot fully initialize object using just #initialize because it requires some additional arguments to initialize properly. For that many languages having so-called constructors, where you cannot obtain an instance with not properly initialized state because you have to use constructors when creating new instance. -- Best regards, Igor Stasenko.
