On Sunday, 11 June 2017 at 01:57:52 UTC, 9il wrote:
The code has huge number of allocations. For example, T matrixes are and then concatenated to be used in BLAS.
You are right - I realised this as I was writing the script but I address this point later ...
Why not to use ndslice and Lubeck  libraries instead?  https://github.com/kaleidicassociates/lubeck Ilya
Thank you for mentioning the Lubeck package, I did not know about it and it looks very interesting.
The article is exploratory, I also assume that the person reading it is busy. I tend to gravitate towards Phobos because its there - its the standard library and comes with D, its easy to write code with it and easy for a reader to access. If I write an article with code I want it to be likely that:
1. Anyone can download and run the code immediately and it will work. 2. If someone sees the article in 6 months or 3 years and downloads the code it will work. 3. The reader will be able to look up all the functions I have used in the D website - makes it very easy for learners.
At this stage the numerical computing ecosystem in D is not mature and could change drastically. I added a link to the Mir library at the top because I wanted people to be aware of the Mir project.
The article is more about GLM in D than performance but I can point to the Lubeck package in the article and mention your observation on the allocations - making it clearer upfront.
As I said in the previous reply, I did learn a lot from writing the article and I think the performance observation is highly relevant for building a GLM package in D.