Salida rápida en Java

Mientras hacemos problemas en varias plataformas de codificación en algunas preguntas terminamos con (TLE). En ese momento, incluso si usamos entrada rápida, a veces (TLE) permanece en Java. En ese momento, si usamos una salida rápida con una entrada rápida, puede reducir el tiempo necesario. La salida rápida generalmente se usa cuando tenemos que imprimir numerosos elementos, lo que se muestra más adelante y se analiza a continuación como método 2

Métodos:

  1. Sin usar salida rápida (Naive)
  2. Uso de salida rápida (óptima)

Método 1: sin usar salida rápida (método estándar)

 System.out.println() se usa para imprimir un argumento que se le pasa. Se puede dividir en tres partes.

  • Sistema: Es una clase final definida en el paquete java.lang .
  • out: es un campo miembro estático de la clase System y es de tipo PrintStream
  • println(): Es un método de la clase PrintStream. println imprime el argumento pasado a la consola estándar y una nueva línea.

Implementación: Programa en el que estamos imprimiendo el valor de 0 a 10^5

Ejemplo

Java

// Java Program to Print VeryLarge Bunch of Numbers
// without using fast output concept
 
// Importing all input output classes
/**
 * @author Akhil
 */
import java.io.*;
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Iterating over very large value
        for (int i = 0; i < 100000; i++)
 
            // Print all the elements of an array
            // till the condition violates
            System.out.println(i);
    }
}

Salida: se imprimen 10000 números del 0 al 9999 y este programa tarda 0,88 segundos en ejecutarse

Método 2: uso de salida rápida (óptima)

La clase PrintWriter es la implementación de la clase Writer . Se prefiere usar PrintWriter que usar System.out.println cuando tenemos que imprimir muchos elementos, ya que PrintWriter es más rápido que el otro para imprimir datos en la consola.

La variable System.out hace referencia a un objeto de tipo PrintStream que envuelve un BufferedOutputStream. Cuando llama a uno de los métodos write() en PrintStream, internamente vacía el búfer del BufferedOutputStream subyacente. No sucede con PrintWriter. Tenemos que hacerlo nosotros mismos.  

Implementación:

Ejemplo

Java

// Java Program to Print VeryLarge Bunch of Numbers
 
// Importing input output classes
/**
 * @author Akhil
 */
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
      PrintWriter out=new PrintWriter(System.out);
        // Again iterating over very Big value
        for (int i = 0; i < 100000; i++)
         out.print(i + "\n");
 
        // Flushing the content of the buffer to the
        // output stream using out.flush() methods
         
          out.flush();
    }
}

Producción: 

Se genera la misma salida, es decir, se imprimen 10000 números del 0 al 9999 y este programa tarda 0,14 segundos en ejecutarse, lo que es un 84% más rápido que se genera una salida con respecto al tiempo comparando los dos ejemplos anteriores, como se ilustra. 

Publicación traducida automáticamente

Artículo escrito por akhil3041999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *