Flattening ASTs and other compiler data structures
Blender (the 3D modelling software) is a fascinating case of this. To make loading and saving files fast and lossless, it uses identical on-disk and in-memory representations. In other words, everything is in an arena, and saving and loading is just a memcpy of the entire arena. Considering the massive potential complexity of a Blender project and the myriad issues you could have with serialisation and deserialisation, this seems like a great design to me.<p>The trade-off of course is that your data structure design is kinda sticky, insofar as you need to be able to open files for older versions.