Addresses #7 by sorting columns as they are added in the grow algorithm. This is done by leveraging the quicksort algorithm of sort!(::Vector{<:Number}), which makes no allocations, but applied to the joint rowval, nzval of SparseMatrixBuilder through a custom type CoSort. It's all rather clever and elegant, but it still introduces a 7% performance penalty of column sorting in grow. The advantage in linear algebra operations of sorted sparse columns seems non-existant.
Addresses #7 by sorting columns as they are added in the
grow
algorithm. This is done by leveraging the quicksort algorithm ofsort!(::Vector{<:Number})
, which makes no allocations, but applied to the jointrowval
,nzval
ofSparseMatrixBuilder
through a custom typeCoSort
. It's all rather clever and elegant, but it still introduces a 7% performance penalty of column sorting ingrow
. The advantage in linear algebra operations of sorted sparse columns seems non-existant.