A case for valueless AA's?
Steven Schveighoffer
schveiguy at yahoo.com
Wed Mar 30 06:04:06 PDT 2011
On Tue, 29 Mar 2011 18:42:59 -0400, bearophile <bearophileHUGS at lycos.com>
wrote:
> Piotr Szturmaj:
>
>> void[0][string] aa;
>> aa["key"] = [];
>> assert("key" in aa);
>
> Nice. I have done a benchmark, and it seems a void[0][int] uses the same
> amount of memory as a int[int]. I have not tried a void[0][string].
Each node in the hash has a pointer (for the next node), a hash (size_t)
and the key and value. Given the granularity of allocation (16 bytes),
anything less than 16 bytes will be 16 bytes.
If the above trick works correctly, a void[0][string] should be the same
size as int[int]. (8 bytes for pointer and hash, 8 bytes for string key,
and hopefully 0 bytes for the value).
BTW, you should not use [] in your code, as this calls a runtime array
allocation function. Better to use something else, not sure what though.
Maybe an enum?
-Steve
More information about the Digitalmars-d
mailing list