Sean Kelly wrote:
Andrei Alexandrescu Wrote:
It all depends on what the largest payload is. One of my apps' largest structures was a hash, which was almost twice as large in the 64-bit version.

It's always possible to trim down the bits used for a pointer inside a data
structure if the savings really matters.  Doing so can create some really
interesting bugs though.

The 'reduced' pointer memory model is a bad fit for D because:

1. D has to work with the corresponding C compiler, which does not support such a memory model. This kills it right there.

2. This will kill off a lot of the benefits of having a large address space that have nothing to do with allocating a lot of memory. I mentioned these in another post.

3. Having to support 2 memory models doubles the work. Two libraries, two test suite runs, more documentation, inevitable user confusion and mismatching, everyone shipping a library has to ship two, etc.

If you must shrink the space required by pointers for a particular data structure, I suggest instead storing an offset instead of the pointer. Then, follow the indirection by adding said offset to a "base pointer".

Reply via email to