On Aug 22, 2013, at 3:05 AM, Diederik Meijer | Ten Horses <diede...@tenhorses.com> wrote:
> What actually speeds things up significantly is to revert back to NSString > and use NSRegularExpression. > I now needs seven seconds on iPad3 to handle >600 replacement actions. This > is, in itself a VERY long time Indeed.; that’s incredibly slow. You should be able to do this in a handful of milliseconds. Don’t make your users suffer through a progress meter because you couldn’t find the right optimization :) The right way to do this is by scanning through the original string and writing to a new mutable string. Using replaceCharacters on a mutable string isn’t much of a speedup because it keeps copying characters in the mutable string over and over (and copying the entire string if its buffer needs to grow.) create the empty output mutable string with sufficient capacity (i.e. maybe 2x the input string length) set pos to 0 repeat find next instance of marker in original string starting from index ‘pos’ if none found break append input characters from ‘pos’ to start of marker to output string append replacement characters to output string advance ‘pos’ to end of marker end I would guess that most algorithms textbooks describe things like this in more detail. —Jens _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com