[fpc-devel] Faster InitObject

Hans-Peter Diettrich DrDiettrich1 at aol.com
Thu Feb 23 23:20:35 CET 2012


Amir schrieb:

> The performance of FillChar is not my problem, The main issue in my case 
> is that my class has a big array defined inside it. I developed my code 
> such that this array does not need to be initialized with zero initially 
> (I have not assumed anything about the content of this array).
> But the InitInstance function, initialize the array with zero.
> 
> I can see a simple solution to resolve my problem. I can change the 
> array, in my class, to a dynamic array or pointer or ...
> But what if I had, let's say, many variables inside my class? Or a big 
> data structure?

The initialization of every class instance is a major improvement over 
e.g. C++ classes. I'd say that you should accept it, instead of 
searching for workarounds, with hard to predict effects in the remaining 
code.

While it may be possible to move elements, which do not deserve an 
initialization, out of the instance, this solution adds time to *every* 
later usage, and may require methods (calls!) to address these values as 
properties.

Another solution could move all uninitialized members to the end of the 
instance, and to initialize only the first part of the instance. But 
such modified behaviour will also affect all derived classes, whose 
added members then either stay uninitialized (what's unexpected), or 
will revert your optimization of the base class.

DoDi




More information about the fpc-devel mailing list