-
Notifications
You must be signed in to change notification settings - Fork 199
/
TODO
45 lines (45 loc) · 3.15 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
- Buffer bulk methods with index to get rid of mapped buffer duplication
- Loops in sorting for big arrays should use real indices, not get/set
- Check that binary insertion sort is maybe better
- radix sort for big arrays
- Navigable sets and maps
- Make digit array in radix sort shorter
- FastIterable interface
- Try tripartite quickSort or TimSort for generic sorting.
- http://zimbry.blogspot.com/2011/09/better-bit-mixing-improving-on.html
- http://java-performance.info/large-hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove
- http://shipilev.net/
- http://java-performance.info/jmh/
- Big maps
- Cilksort
- Tune threshold for non-recursive sorts
- parallel indirect radix sort of two arrays
- Better remove() from keyset (avoid in all possible cases inheritance from AbstractSet!)
- Eliminate ping-pong implementations (look for "delegates to the corresponding generic method")
- Fix comparator() in SortedSet not being specified in the same way as in SortedMap
- Document the return value of map generic methods (null? default return value?).
- XBigArrays.unstableSort for automatic algorithm selection like XArrays.unstableSort
- BigList.unstableSort method
- addTo() etc. on numeric interfaces
- peek() method for ArrayFIFOQueue.
- Spliterator implementations for RBTreeSet/Map, AVLTreeSet/Map, and ArrayFrontCodedLists
- Implement type-specific Iterator views of Spliterator (aka, Spliterators.iterator(Spliterator))
- Find a cleaner way to deal with the disambiguation overloads
aka. get rid of the forEachRemaining(it.unimi.dsi.fastutil.ints.IntConsumer) style methods and the SpliteratorDisambiguationMethodsFinalShim style classes
- Primitive collector helper methods, collecting a primitive stream into list or set without boxing/unboxing
- Don't have a N-nested sublist of ArrayList.get go through N layers of get methods
remove and add will have to continue to do this so all parent sublists can adjust their bounds,
but get can just short circuit to the parent list's array if we track bounds correctly
- toBigArray for BigList (or maybe a new BigCollection)
- Make the recursive algorithms of BigArrays and the type specific BigArrays prefer aligning to segment boundaries
This should improve cache locality
- Make constructors consistent across types (make it so all Collection types can accept a Collection, an array, an Iterable, and an Iterator)
- Add array copying constructors (or perhaps static factories) for ArraySet
The current one just uses the array exactly, when in some cases a copy of that array may be desired
We can't change the current one without breaking compatibility
- For classes that have a main() method for testing instead of a JUnit test, either migrate it to JUnit or make a JUnit test that just calls the in class's test method
This should make it easier to get more accurate code coverage data.
- Update all benchmarks with the framework ArraySet and ArrayList have
- Pull `if (n < 0) throw new IllegalArgumentException("Argument must be nonnegative: " + n);` into a helper method, since it is used so much
- Convert the tests in main methods (if TEST=1 is given to make) into real unit tests
- Similarly, pull the benchmarks into their own files