Performance Trade-offs Implementing Refactoring Support for
Objective-C
When we started implementing a refactoring tool for real-world
C programs, we recognized that preprocessing and parsing in
straightforward and accurate ways would result in unacceptably
slow analysis times and an overly-complicated parsing system.
Instead, we traded some accuracy so we could parse, analyze, and
change large, real programs while still making the refactoring
experience feel interactive and fast. Our tradeoffs fell into three
categories: using different levels of accuracy in different parts of
the analysis, recognizing that collected wisdom about C programs
didn't hold for Objective-C programs, and finding ways to exploit
delays in typical interaction with the tool.