I spent most of the morning chasing down a performance regression in my code; it turns out that the following statement
y = spzeros(50000,50000)' * reshape(zeros(2,25000)',50000)
requires 16 seconds in 0.7.0-beta2 versus a tiny fraction of a second in 0.6.
A fundamental problem causing this and other severe regressions is the proliferation of matrix and vector types in stdlib versus the paucity of people spending time on all the glue methods. I already complained about this a year ago during the 0.5-to-0.6 transition and received responses that the problem would get better as more methods were written. But as far as I can tell (a quick glance at open issues confirms this), the problem is getting worse rather than better because the creation of new methods is outpaced by the explosion in the number of matrix/vector types. Ironically, the new matrix/vector types are being added to improve performance.
I don’t have solid suggestions how to fix this problem. Maybe someone with more authority than me can impose a moratorium on adding new matrix and vector types to stdlib? And maybe someone with more expertise than me can document how to avoid performance traps?
P.S. In case you are wondering, the type of
reshape(zeros(1,1)',1) in 0.7.0-beta2 is: