Given the lazy loading of parsing, it's hard to track what is responsible for duplicate parses during editing. Several hooks (AbuseFilter, SpamBlacklist) and doEditContent() itself call getParserOutput(). The flamegraphs shows the parse happening via most of those hooks, but it doesn't distinguish the "first to call" effect from actual duplicate parses (due to things in AF or vary-* flags from REVISIONID and such).
It would be nice to have a statsd gauge for tracking parses per save to aid in looking for regressions.