I'll do some profiling later but I don't think there should be that much difference. Right now, I am working on a csrtodok function. But shouldn't we just recreate the original matrix rather than it's dok representation? I am going to use csr methods for new sparse arithmetic. The user will enter the matrix, the function will first convert the matrices to csr perform operation on it and then return the resultant matrix in 'normal form' to the user. I think we should have a function for converting csr to 'normal form' matrix