*Amazing* blog post on modelling compilers as a search problem on a Value State Dependence Graph: https://jamey.thesharps.us/2017/06/search-based-compiler-code-generation.html
miniblog.
Related Posts
Today I learnt that A* doesn't work for an arbitrary non-planar graph, you need additional structure:
https://stackoverflow.com/q/26568552/509706
This matches my experience with difftastic so far. The graph is non-planar and my best heuristic only matches Dijkstra perf in typical cases.
I've started playing again with A* search instead of Dijkstra for difftastic. So far it's only saved me visiting 3% of graph nodes, which is negligible.
A* works best when you have a good heuristic, but finding a good heuristic is hard. Currently:
Flamegraphs are an indispensable tool, but sometimes I overuse them. Here's an example for difftastic -- it spends most of the time computing the shortest path.
I was able to make the diff graph smaller, making difftastic much faster -- but the new flamegraph looked the same!
