Brent Simmons, creator of NetNewsWire, once shared a story about a user who filed a bug report about the poor start-up performance of NetNewsWire. Upon discussion with that user, he discovered that they had more than 900,000 unread RSS feeds! The lesson I took away from that story is to expect my users to put thousands of times as much data into my applications as I would ever consider reasonable.
While we’re working with Core Data, we need to consider the performance impacts of our design. We might test with a couple of dozen recipes and expect our users to load a couple hundred recipes into our application and test with those expectations. However, our users can’t read our intentions or expectations. As soon as we ship the application, some user somewhere will load 100,000 recipes into it and then file a bug report that it performs poorly.