Hi,
Maybe it is not a correct list, but I am going to ask my question anyway
:)
Is there a penalty for calling SetLength if array already has the length
we need?
Yes, there's always penalty for operations that you don't need. FPC will
generate normal call, pass arguments, etc. I checked if SetLength with
ansistring detects that requested size is same: It doesn't, it performs
whole allocation and moving.
And if there is a penalty - is there a way to write "generic" function
SmartSetLength(array,length) that will only call SetLength if necessary?
No. Compiler internally emits information about element size, how are they
refcounted etc. as a pointer. Your best bet would be "hacking" FPC to emit
such information to your procedure and then pass it to internal fpc
setlength.
I would personally like it a lot if there was way to access "secret"
information stored along with dynamic arrays/ansistrings, however it's not
easy task. I think best bet would be storing secret information pointers
along with refcount/length and then making functions that allow editing
those data. Then we could have generic "dynamic array" type (I assume?).
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus