Implement Proper Integer and Complex Type Support for All Functions
Opened this issue · 1 comments
Last November I reached out about a speed issue regarding the colsums and rowsums functions, noting that parallel performance over integer matrices wasn't nearly as efficient as it should have been. It turned out this was because there wasn't a proper case defined for integers in the parallel functions, and the issue was quickly resolved by adding proper support for integers for these functions.
That said, the solution to this issue begs the question - was this an isolated issue with this function alone, or is this a systematic issue with the functions in this package? This question's been on my mind since then, and after finally getting around to perusing this package's source code and running some benchmarks it does appear to have been the latter. In short, while I haven't reviewed the source code for nor benchmarked every function, lack of integer type support appears to be an issue with most functions in this package, and while not as pressing, it's also worth noting that there currently doesn't appear to be any complex type support implemented at all for any of these functions.
In light of this, I'm inclined to request a systematic review of all functions in this package, with the goal of adding proper integer and complex type support for all relevant package functions (ideally / preferably starting with the column / row-wise functions - i.e. colMedians / rowMedians, colmeans / rowmeans, colMads / rowMads, etc.). Adding proper integer support for all package functions should improve performance of all functions over integer vectors / matrices just as it did for the parallelized versions of colsums / rowsums, and adding proper complex type support seems sensible as well, as it would allow these functions to be used on all relevant vector / matrix types.
I apologize for the late response and thank you for your interest and your suggestions.
First of all, I am aware of these issues and for some other that exist but nobody has find them :).
Most of the functions support integer and numeric values. Most of the functions support DataFrame and List since last year were I added them and even in parallel version!
As you can see I don't stop to add new options and optimize the algorithms but sometimes I have many futures to add. So, I sorted them based on their importance. That's why I have added first Lists and not finished the integers. It took me 1 year to complete the addition for List in Rfast and Rfast2 and i finished and uploaded the package I found out there was an important bug so I had to review each one of the column wise function.
My point is that I am alone, the core is huge and continues to increase and I don't have so much free time to deal with all of these. Especially to add complex type and Arrays! This needs a lot of effort so all the algorithms will work efficiently.
Patient, and all the futures will be added.