Eficencia en Rendimiento

03/02/2005 - 15:24 por Anonimo | Informe spam
Hola a todos.

Una pregunta, a ver si alguien puede aclararme.

Qué es más eficiente en rendimiento:

string s;

s+= " .";
s+= " .";
s+= " .";

ó

System.Text.StringBuilder sb = new
System.Text.StringBuilder();
sb.Append("");
sb.Append("");
sb.Append("");
// string s = sb.ToString();


Dudas, que me vienen a la mente:

1. Eficiencia en creación de objetos:
string s;
es menos eficiente que
System.Text.StringBuilder sb = new
System.Text.StringBuilder();

2. Modificar objeto:
s+= " "; es más ineficiente que
sb.Append(""); ???

Sé que si son 1000 instrucciones, para sb sería más
eficiente, pero para 3 instrucciones por ejemplo se
notaría ?


En fin, muchas gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
03/02/2005 - 15:40 | Informe spam
Hola,

Normalmente la utilización de objetos StringBuilder lleva a un rendimiento
superior, entre otras cosas porque se evita la creación de objetos (sabes
que los strings son inmutables, y que s += s1; implica crear un nuevo objeto
cuya referencia se asigna a s).

En principio, mi opinión es que no es algo como para obsesionarse y dejar de
usar string; sólo hay que usar StringBuilder en caso de que realmente
necesites un rendimiento "estrella", y siempre en métodos o módulos
específicos.

Salu2,

Octavio

escribió en el mensaje
news:0dbc01c509fc$1e2cd3b0$

Hola a todos.

Una pregunta, a ver si alguien puede aclararme.

Qué es más eficiente en rendimiento:

string s;

s+= " .";
s+= " .";
s+= " .";

ó

System.Text.StringBuilder sb = new
System.Text.StringBuilder();
sb.Append("");
sb.Append("");
sb.Append("");
// string s = sb.ToString();


Dudas, que me vienen a la mente:

1. Eficiencia en creación de objetos:
string s;
es menos eficiente que
System.Text.StringBuilder sb = new
System.Text.StringBuilder();

2. Modificar objeto:
s+= " "; es más ineficiente que
sb.Append(""); ???

Sé que si son 1000 instrucciones, para sb sería más
eficiente, pero para 3 instrucciones por ejemplo se
notaría ?


En fin, muchas gracias.
Respuesta Responder a este mensaje
#2 Alfredo Novoa
03/02/2005 - 16:46 | Informe spam
On Thu, 3 Feb 2005 15:40:55 +0100, "Octavio Hernandez"
wrote:

En principio, mi opinión es que no es algo como para obsesionarse y dejar de
usar string; sólo hay que usar StringBuilder en caso de que realmente
necesites un rendimiento "estrella", y siempre en métodos o módulos
específicos.



Hombre, todo depende del número de cadenas que quieras concatenar.
Para 3 está claro que no vale la pena, pero si son miles entonces
estás obligado a usar StringBuilder sino quieres tener un rendimiento
penoso.


Saludos
Respuesta Responder a este mensaje
#3 Octavio Hernandez
03/02/2005 - 18:26 | Informe spam
¿Qué tal, Alfredo?

Hombre, tal vez mi planteamiento fue demasiado radical, lo que quería
decirle es que no debe obsesionarse y empezar a utilizar StringBuilder cada
vez que vaya a concatenar dos cadenas para un MessageBox.Show...

Me picó la curiosidad y he escrito un programilla que concatena 'N' strings
de 100 caracteres c/u. En mi máquina (Pentium IV 2 GHz) los tiempos más o
menos medios fueron estos:

N Tiempo consumido
100 60 ms
1000 825 ms
5000 21 seg
10000 1 min 30 seg

Esta claro que la subida es exponencial. Luego haré la versión con
StringBuilder para comparar...

Salu2 - Octavio

"Alfredo Novoa" escribió en el mensaje
news:
On Thu, 3 Feb 2005 15:40:55 +0100, "Octavio Hernandez"
wrote:

En principio, mi opinión es que no es algo como para obsesionarse y dejar
de
usar string; sólo hay que usar StringBuilder en caso de que realmente
necesites un rendimiento "estrella", y siempre en métodos o módulos
específicos.



Hombre, todo depende del número de cadenas que quieras concatenar.
Para 3 está claro que no vale la pena, pero si son miles entonces
estás obligado a usar StringBuilder sino quieres tener un rendimiento
penoso.


Saludos
Respuesta Responder a este mensaje
#4 Anonimo
04/02/2005 - 08:19 | Informe spam
Sobre este tema, ya que lo han planteado, cómo sería el
comportamiento de esta instrucción ?

string s = "cadena1" + variable1 + "cadena2";

Se crearían varios objetos string por cada +
(concatenación) que aparezca ?




Hola a todos.

Una pregunta, a ver si alguien puede aclararme.

Qué es más eficiente en rendimiento:

string s;

s+= " .";
s+= " .";
s+= " .";

ó

System.Text.StringBuilder sb = new
System.Text.StringBuilder();
sb.Append("");
sb.Append("");
sb.Append("");
// string s = sb.ToString();


Dudas, que me vienen a la mente:

1. Eficiencia en creación de objetos:
string s;
es menos eficiente que
System.Text.StringBuilder sb = new
System.Text.StringBuilder();

2. Modificar objeto:
s+= " "; es más ineficiente que
sb.Append(""); ???

Sé que si son 1000 instrucciones, para sb sería más
eficiente, pero para 3 instrucciones por ejemplo se
notaría ?


En fin, muchas gracias.


.

Respuesta Responder a este mensaje
#5 Octavio Hernandez
04/02/2005 - 14:25 | Informe spam
Sería lo siguiente:

"cadena1" + variable1 > temp1
temp1 + "cadena2" > temp2;
s < temp2

Slds,

Octavio

escribió en el mensaje
news:1d9401c50a89$ec0deca0$
Sobre este tema, ya que lo han planteado, cómo sería el
comportamiento de esta instrucción ?

string s = "cadena1" + variable1 + "cadena2";

Se crearían varios objetos string por cada +
(concatenación) que aparezca ?




Hola a todos.

Una pregunta, a ver si alguien puede aclararme.

Qué es más eficiente en rendimiento:

string s;

s+= " .";
s+= " .";
s+= " .";

ó

System.Text.StringBuilder sb = new
System.Text.StringBuilder();
sb.Append("");
sb.Append("");
sb.Append("");
// string s = sb.ToString();


Dudas, que me vienen a la mente:

1. Eficiencia en creación de objetos:
string s;
es menos eficiente que
System.Text.StringBuilder sb = new
System.Text.StringBuilder();

2. Modificar objeto:
s+= " "; es más ineficiente que
sb.Append(""); ???

Sé que si son 1000 instrucciones, para sb sería más
eficiente, pero para 3 instrucciones por ejemplo se
notaría ?


En fin, muchas gracias.


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida