dlib - d utility library

Peter Alexander peter.alexander.au at gmail.com
Fri Sep 28 10:47:35 PDT 2012


On Friday, 28 September 2012 at 09:43:34 UTC, Timur Gafarov wrote:
> dlib is a growing collection of native D language libraries 
> serving as a framework for various higher-level projects - such 
> as game engines, rendering pipelines and multimedia 
> applications. It is written in D2 and has no external external 
> dependencies aside D's standart library, Phobos.

A note on your Vector implementation. Currently you use the 
vector operators, e.g.

     Vector!(T,size) opAddAssign (Vector!(T,size) v)
     body
     {
         arrayof[] += v.arrayof[];
         return this;
     }

This is fine for large vectors, but (correct me if I'm wrong), 
your vector class appears to be designed for small vectors. Those 
vector ops currently call a asm optimised function that uses SIMD 
instructions in a loop - it works well for larger vectors with 
hundreds of elements, but for small vectors it's significantly 
faster to just use:

foreach (i; 0..size)
     arrayof[i] += v.arrayof[i];


I've also noticed that you've provided Matrix2x2 and Matrix4x4 as 
separate structs from the more generic Matrix. I'm guessing this 
is for specialisation. A more idiomatic way to handle this would 
be to use template specialisation to provide the optimised 
versions. That way, when people use Matrix!(T, 2, 2) they get all 
the benefits of Matrix2x2!T as well.


More information about the Digitalmars-d-announce mailing list