Wilfred Hughes
Wilfred Hughes
See the mutable_vertices branch. This might save perf, as we're currently spending most of our time looking up items in hashmaps. It's also worth exploring whether a conventional eager graph...
See the [accurate_ancestors_with_fallback](https://github.com/Wilfred/difftastic/compare/accurate_ancestors_with_fallback) branch.
Try never recursing into a shared unique node. Shared uniqueness is probably a useful property to store in metadata too.
This would help reduce the maximum nesting that we encounter.
Difftastic scales badly for large single lists. It might be effective to limit how many nodes are considered together, to fix the 'small number of large lists' problem that typing_before.ml...
https://en.wikipedia.org/wiki/Fringe_search or https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm
Currently we're storing everything in the big hashmap. This takes time to lookup and to insert (21% and 4% respectively). If we stored predecessors in a LRU hashmap, we'd know...
Bidirectional dijkstra might help, but it's really awkward to implement. It'd be good to explore an explicit visited set for Dijkstra, alongside a priority queue that supports changing priorities. Currently...
This would give us nicer background highlighting and multiple shades (e.g. making certain parts of a change more prominent, similar to git-split-diffs).
Currently they are entirely ignored, leading to queries matching more than they should.