read() performance - Linux.too?
Derek Parnell
derek at nomail.afraid.org
Mon Jul 24 22:36:40 PDT 2006
On Tue, 25 Jul 2006 17:18:24 +1200, Regan Heath wrote:
> On Tue, 25 Jul 2006 15:15:24 +1000, Derek Parnell
> <derek at nomail.afraid.org> wrote:
>> On Mon, 24 Jul 2006 22:02:31 -0700, Unknown W. Brackets wrote:
>>
>>> Actually, I believe it's just:
>>>
>>> import std.gc;
>>>
>>> // ...
>>>
>>> ubyte[] data = new ubyte[1024 * 1024];
>>> std.gc.removeRange(data);
>>>
>>> This tells it, afaik, not to scan the described range for pointers. It
>>> seems to me entirely possible that the compiler could automatically
>>> generate this code for new ubyte[] and such calls.
>>
>> Yes, but wouldn't that RAM be deallocated only at program end? If you
>> wanted it deallocated earlier you would still have to delete it.
>
> The range pointed at by the array 'data' shouldn't be scanned, but there
> is no reason the array reference itself cannot be scanned and therefore
> collected, right? And if the array reference is collected, the data will
> be freed, just not scanned for other pointers, right?
Yes that sort of makes sense. So does the parameter stack get scanned after
a function returns but before the calling function takes control again,
because that's where the array reference resides usually. Or is it that
when a 'new' is done, the returned address is added to a list that the GC
uses to free up RAM from?
--
Derek
(skype: derek.j.parnell)
Melbourne, Australia
"Down with mediocrity!"
25/07/2006 3:29:21 PM
More information about the Digitalmars-d
mailing list