Next obvious speedups ideas I can think of are: 1) Batch insert into OpenIntDoubleHashMap(OIDHM) and OrderedIntDoubleMapping(OIDM). This way mutable operations like plus() or minus() can iterate on the Intersection elements and add the difference in one go. Can anyone think of a smart way to rehash based on new input elements ?
2) Speed up aggregate and assign methods(Dan is doing that with) 3) Generalize caching framework of derived properties like getLengthSquared() and extend it into other things, like commons norms (L1, L2), numNonZeros(), 4) Parallelize operations: Use a consistent sharding function to trivially parallelize certain iterative operations across multiple threads. 6) Replace current DenseVector and/or encapsulate JBlas inside it. 7) Improve exception handling. All these can be independent projects. I know I wont get time to get to this, I am more than happy to review
