Is it's correct to say that ALL types that can grow are place on heap?

rikki cattermole rikki at cattermole.co.nz
Wed Sep 12 14:46:22 UTC 2018


On 13/09/2018 2:34 AM, drug wrote:
> 12.09.2018 15:14, Timoses пишет:
>> On Tuesday, 11 September 2018 at 12:07:14 UTC, drug wrote:
>>>
>>> If data size is less or equal to total size of available registers 
>>> (that can be used to pass values) than passing by value is more 
>>> efficient. Passing data with size less than register size by 
>>> reference isn't efficient because you pass pointer (that has register 
>>> size) and access memory using it.
>>
>> Thank you!
>> So if I pass by reference it will ALWAYS use the address in memory to 
>> fetch the data, whereas passing it by value enables the (compiler?..) 
>> to use the register which has already loaded the data from memory 
>> (stack for example)?
> 
> Honestly, I'm not an expert in this domain, but I think so.

Recently used areas of the stack will be available in the cache in most 
cases. The issue with passing by reference is it increases the 
indirection (number of pointers) that it must go through to get to the 
raw bytes.

This is why classes are bad but structs are good. Even if the struct is 
allocated on the heap and you're accessing it via a pointer.


More information about the Digitalmars-d-learn mailing list