Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Controlar Tiempo de Ejecución de un Ciclo

Nuestros ethical hackers explican en que consiste el tiempo de ejecución de una aplicación y por qué es necesario tenerlo presente a la hora de desarrollar software. Además, enseñan dos formas de controlar la duración de ejecución de un ciclo for.

Necesidad

Controlar el tiempo de ejecución de un ciclo en un programa desarrollado en Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en Java

  2. La aplicación hace uso de ciclos para el procesamiento de datos.

  3. Debe validarse la entrada de información antes de ser usada.

Solución

Para nadie es un secreto que, desde hace muchos años, la humanidad ha venido dando pasos agigantados en cuanto a la creación, desarrollo y evolución de la tecnología. Y no es para menos, hoy en día la tecnología hace parte de la vida cotidiana de las personas, desde entornos laborales, sociales e incluso íntimos y personales. Los computadores, los smartphones, los televisores, los vehículos, entre otros elementos tecnológicos funcionan mediante la intervención de uno o varios programas (software) y, ya que se tiene tan alta demanda, es obligatorio que dichos programas funcionen a la perfección.

En ese orden de ideas, una de las principales variables que se deben tener en cuenta a la hora de realizar un programa es el tiempo de ejecución de dicho programa. Se conoce por tiempo de ejecución al intervalo de tiempo en el que un programa se ejecuta. Este tiempo inicia con la puesta del programa en la memoria del host que lo procesa, y finaliza cuando el programa concluye sus instrucciones satisfactoriamente, o porque el programa produce algún error y el sistema debe forzar su finalización.

Entonces, como el programa está consumiendo recursos del sistema, en caso de que este tarde demasiado en terminar su ejecución, o peor aun, que nunca termine de ejecutarse, puede ocasionar que otros programas, que también usan el sistema, no se ejecuten adecuadamente, o que el sistema en si mismo colapse ocasionando una denegación total del servicio.

Con el fin de prevenir dicho problema se recomienda controlar el tiempo de ejecución del programa. En esta solución se verá la manera de como hacerlo específicamente en los ciclos o loops de una aplicación hecha en Java.

  1. Existen dos formas de controlar el tiempo de ejecución de un ciclo. En la primera, se establece un máximo de iteraciones.

  2. Para hacerlo, se crea la constante MAX_INPUT. Esa constante establece el número máximo de iteraciones para los ciclos.

    example.java
    1
    2
    public class While {
      private static final int MAX_INPUT = 100;
    
  3. Como segundo paso, se define el punto de entrada para la aplicación.

    1
    public static void main(String[] args) throws Exception {
    
  4. Se define una variable number, la cual recibirá la entrada del usuario. Esta variable será usada como parámetro del ciclo for.

    1
    2
    3
    4
    5
    6
    7
    8
       long number = Integer.parseInt(args[0]);
       int i;
       for (i = 0; i < number && i < MAX_INPUT; i++) {
         //Code for the application
       }
       System.out.println("Final i: " + i);
      }
    }
    
  5. La segunda forma es establecer el tiempo máximo de ejecución. Para ello se establece el número máximo de milisegundos durante el cual el ciclo tendrá vida. Por lo que es necesario obtener el tiempo actual en milisegundos con el fin de hacer el cálculo respectivo.

    example2.java
    1
    2
    3
    int MAX_MILLISECONDS = 500;
    long starttime = System.currentTimeMillis();
    long currtime;
    
  6. Por lo tanto, el ciclo for respectivo quedaría así.

    1
    2
    3
    4
    for (i=0; i < number &&
      (System.currentTimeMillis() - starttime) < MAX_MILLISECONDS; i++) {
        //Code for the application
    }
    



Haz un comentario

Estado de los servicios - Términos de Uso