Stavo conversando con un amico sulla classe diStringBuilder C #%, e qual era il suo comportamento. Parafrasando, ma il mio lato della conversazione è stato qualcosa di simile (ho semplificato eccessivamente perché esattamente come StringBuilder funziona non è importante per la mia domanda)
StringBuilderis more efficient to use for extensive string concatenation than to simply use+. The reason is thatStringBuilderdoesn't dynamically create a newstringfor each concatenation operation. It waits until all of your desired concatenations are "built" and only then does it dynamically allocate the space and give you back yourstring.
Il mio amico ha detto qualcosa sulla falsariga di
That may be true today, but if you are reliant on such optimizations, then you should make your own
StringBuilder. In future versions, there's no reason thatStringBuildercouldn't use simple string concatenation (str1 = str2 + str3). Libraries only guarantee functional equivalence, not runtime equivalence.
È vero per le biblioteche?
- Se utilizzo la funzione
Sort()di una libreria con runtimeO(n*log(n)), è possibile che una versione futura cambi il tempo di esecuzione inO(n^2)?
Lo stesso vale per gli strumenti eseguibili?
- Potrebbe (ad esempio) il tempo di esecuzione di
grepcambiare radicalmente in futuro?
A parte questo, non sarebbe una buona pratica per uno sviluppatore di librerie / API / strumenti mantenere i runtime per le stesse chiamate simili nel tempo?