Excelente opción para temas de rendimiento con aplicaciones escalables como haces mención en el video. Lo tendré en consideración con procesos grandes. Saludos.
Gracias por el video @MitoCode. Quisiera compartir el código con el método Scanner: import java.util.Scanner; public class Prueba{ public static void main(String args[ ]){ Scanner in=new Scanner(System.in); StringBuilder palabra = new StringBuilder( ); System.out.println("Ingresar el texto a imprimir"); String texto=in.nextLine( ); palabra.append(texto); System.out.println("El StringBuilder es: "+palabra.toString( )); } }
Lo acabo de hacer asi; import java.util.Scanner; public class SBuilder { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder name = new StringBuilder(); System.out.println("Ingresa tu nombre"); name.append( sc.nextLine()); System.out.println("name = " + name); } }
¡Excelente...! Pregunta: ¿A que se debe la utilización de la variable diferencia como un tipo double? si las variables tiempo_inicio y tiempo_fin son de tipo long.
Muy buena observación. Creo que fue más como por el ejemplo que puso, pero efectivamente "System.nanoTime()" devuelve un long. Entonces, no debería haber ninguna diferencia sustancial (teniendo en cuenta que Java nos ayuda con la conversión implícita en el tipo de dato)
Este último tiempo mejoró bastante concatenar con el operador +, aunque StringBuilder llega a ser mejor. Sin embargo otra opción que es más óptima que esas dos es usar el método .concat(string) de la clase String. Por ej: String texto = ""; texto.concat("Hola mundo");
Hola, acabé de realizar la prueba con el método "concat(string)" y sigue siendo muy demorado. A continuación comparto el código: public class Test { public static void main(String[] args) {
final int TAMANIO = 100_000; long inicio; long fin;
} } Y por ejemplo este fue el resultado de la salida en mi máquina: Usando String con operador + ->Se demoró: 18752 ------------------------- Usando String con método concat ->Se demoró: 8038 ------------------------- Usando StringBuilder ->Se demoró: 4 -------------------------
La verdadera diferencia es que StringBuilder es mutable, por lo que no es thread-safe. El operador + crea un nuevo registro en heap memory
Excelente explicación 👏 me ayudaste mucho
Pero que buen tips el de StringBuilder. Excelente la prueba para demostrar las diferencias de tiempo con el signo de concatenación
Excelente opción para temas de rendimiento con aplicaciones escalables como haces mención en el video. Lo tendré en consideración con procesos grandes. Saludos.
Deberías hacer más videos como este con datos curiosos o rebuscados, buen video.
Excelente información, gracias, lo pondré en practica para mis futuras aplicaciones.
Saludos!
Buen dato, lo aplicaré en el futuro, gracias.
Lo consideraré, muchas gracias!
gracias, me ayudaste mucho.
Gracias por el video @MitoCode. Quisiera compartir el código con el método Scanner:
import java.util.Scanner;
public class Prueba{
public static void main(String args[ ]){
Scanner in=new Scanner(System.in);
StringBuilder palabra = new StringBuilder( );
System.out.println("Ingresar el texto a imprimir");
String texto=in.nextLine( );
palabra.append(texto);
System.out.println("El StringBuilder es: "+palabra.toString( ));
}
}
Lo acabo de hacer asi;
import java.util.Scanner;
public class SBuilder {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder name = new StringBuilder();
System.out.println("Ingresa tu nombre");
name.append( sc.nextLine());
System.out.println("name = " + name);
}
}
NO lo sabia, gracias Jaime
¡Excelente...!
Pregunta: ¿A que se debe la utilización de la variable diferencia como un tipo double? si las variables tiempo_inicio y tiempo_fin son de tipo long.
PARA QUE MUESTRE LAS MILESIMAS DE SEGUNDOS LUEGO DEL PUNTO DECIMAL.
Muy buena observación. Creo que fue más como por el ejemplo que puso, pero efectivamente "System.nanoTime()" devuelve un long. Entonces, no debería haber ninguna diferencia sustancial (teniendo en cuenta que Java nos ayuda con la conversión implícita en el tipo de dato)
Buena información
Genial 👏
Este último tiempo mejoró bastante concatenar con el operador +, aunque StringBuilder llega a ser mejor. Sin embargo otra opción que es más óptima que esas dos es usar el método .concat(string) de la clase String. Por ej:
String texto = "";
texto.concat("Hola mundo");
Hola, acabé de realizar la prueba con el método "concat(string)" y sigue siendo muy demorado. A continuación comparto el código:
public class Test {
public static void main(String[] args) {
final int TAMANIO = 100_000;
long inicio;
long fin;
System.out.println("Usando String con operador +");
inicio = System.currentTimeMillis();
String textoString = "";
for (int i = 0; i < TAMANIO; i++) {
textoString += i;
}
fin = System.currentTimeMillis();
System.out.println("->Se demoró: " + (fin-inicio));
System.out.println("-------------------------");
System.out.println("Usando String con método concat");
inicio = System.currentTimeMillis();
String textoStringConcat = "";
for (int i = 0; i < TAMANIO; i++) {
textoStringConcat = textoStringConcat.concat(String.valueOf(i));
}
fin = System.currentTimeMillis();
System.out.println("->Se demoró: " + (fin-inicio));
System.out.println("-------------------------");
System.out.println("Usando StringBuilder");
inicio = System.currentTimeMillis();
StringBuilder textoStringBuilder = new StringBuilder();
for (int i = 0; i < TAMANIO; i++) {
textoStringBuilder.append(i);
}
fin = System.currentTimeMillis();
System.out.println("->Se demoró: " + (fin-inicio));
System.out.println("-------------------------");
}
}
Y por ejemplo este fue el resultado de la salida en mi máquina:
Usando String con operador +
->Se demoró: 18752
-------------------------
Usando String con método concat
->Se demoró: 8038
-------------------------
Usando StringBuilder
->Se demoró: 4
-------------------------
@@PabloRodriguezMontero increible la diferencia de rendimiento que tienen muchas gracias por aclararlo!
Hola muy buenos tus videos , Pedro podrías ser mas ordenado
StringBuilder me da un error en eclipse version oxigen, cual podria ser el problema?..
BUEN DATO LO DE JAVAMAIL.
Interesante
En la industria usamos el Stringbuilder de manera muy común
Es decir que el stringbuilder no es inmutable?
+Henry Serrano aja stringbuilder y es StringBuffer son mutantes
+Henry Serrano mutables jaja
COMO LOS XMEN?
Lo mismo sucede con Stream y Lambdas, se demoran
pelos