stringByAppendingString: vs. stringWithFormat:
The only way to know is to measure it.

And, of course, the only reason to measure it is if it actually matters;  if you have a real world performance issue that can be tracked to this code.

If not, don't worry about it.

However, there are a few issues to consider:


every append* is going to cause an allocation and memory copying, those are expensive
every *WithFormat: is going to cause a string to be parsed (and there will be allocations/copying)
all of this is likely entirely moot unless you are doing this 10s of thousands of times often.   If you are, it begs the question as to why?


And, finally, note that this kind of string manipulation is going to make localization more difficult.