On Wed, Jan 19, 2022 at 02:33:02PM -0800, Ali Çehreli via Digitalmars-d-learn 
wrote:
[...]
> // Returning a dynamically allocated array looks expensive
> // here. Why not use a struct or std.typecons.Tuple instead?

Premature optimization. ;-)  There's nothing wrong with allocating an
array.

If you're worried about memory efficiency, you could allocate the entire
matrix in a single block and just assemble slices of it in the outer
block, like this:

        uint[][] createBoolMatrix(size_t count) {
                auto buffer = new uint[count*count];
                return iota(count).map!(i => buffer[count*i .. count*(i+1)])
                        .array;
        }

This lets you do only 2 GC allocations instead of (1+count) GC
allocations.  May help with memory fragmentation if `count` is large and
you create a lot of these things.  But I honestly wouldn't bother with
this unless your memory profiler is reporting a problem in this aspect
of your program.  It just adds complexity to your code (== poorer
long-term maintainability) for meager benefits.


T

-- 
What do you call optometrist jokes? Vitreous humor.

Reply via email to