Välja mellan NSString och NSMutableString

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Jag arbetar på ett program som ska bygga ihop en konfigurationsfil som en sträng och sedan skriva den till en fil. Beroende på vadanvändaren gjort för inställningar sätts olika värden in i strängen. För att göra det använder jag NSString och sedan metoderna stringWithString och stringWithFormat för att bygga upp den. Ungefär så här:

NSString *conf = @""
conf = [conf stringByAppendingFormat:@"key0 = %@\n", value0];
conf = [conf stringByAppendingFormat:@"key1 = %@\n", value1];
if (value2 == nil) {
    conf = [conf stringByAppendingString:@"key2 = 0\n"];
} else {
    conf = [conf stringByAppendingFormat:@"key2 = %@\n", value2];
}
conf = [conf stringByAppendingString:@"array = ( \"a\", \"b\", \"c\" )"];

Men skulle det kanske vara bättre att använda NSMutableString och metoderna appendString och appendFormat, eller skulle det tvärtom bli sämre? Spontant känns det som om det skulle gå snabbare om man använda NSMutableString. Vad föreslår ni?

Senast redigerat 2007-10-22 18:20
  • Medlem
  • Kiruna
  • 2007-10-22 10:30

stringWithFormat är en av NSStrings klassmetoder och kan inte skickas till en instans. Om du inte väljer att använda NSMutableString kan du istället skicka stringByAppendingFormat.

conf = [conf stringByAppendingFormat:@"key0 = %@\n", value0];

Sen, om det inte är i rent studie- eller teorisyfte, så finns det nog ingen anledning att oroa sig för optimering i det här stadiet, såvitt din applikation inte har så extremt många olika inställningsvärden att det blir en märkbar effekt för användaren. Som det gamla talesättet säger: "Premature optimization is the root of all evil."

Senast redigerat 2007-10-22 18:37

Jo, så är det naturligtvis. Det var sent och jag satt inte och tittade på källkoden samtidigt som jag skrev inlägget. Så kan det gå ibland.

Du slipper allokera fem olika instanser, så viss prestandaskillnad kan säkert uppmätas. I just det här fallet tycker jag det enbart är en fråga om vad som ser tydligast ut i koden, då prestandaskillnaden kommer vara extremt låg. Gör du samma sak i en tight loop och räknar med att behandla tusentals rader i din fil blir det en annan fråga. Men som alltid, skriv det som blir enklast först, optimera om du märker att det går för långsamt, och använd alltid, alltid Shark för att försäkra dig om att du optimerar rätt saker.

  • Medlem
  • Mölndal
  • 2007-10-23 08:29

Väl talat!

  • Medlem
  • Simrishamn
  • 2007-10-23 20:22

Jag hade använt NSMutableString, av rena läsbarhetsskäl.

1
Bevaka tråden