lunes, 14 de julio de 2014

Medir el tiempo de ejecución en Java – PHD – Miami – Shipping


Muchas veces es útil medir el tiempo de ejecución que tienen nuestros algoritmos, en algunas ocasiones me he encontrado con que un problema puede tener 2 soluciones o más, pero ¿cual de estas es más optima o eficiente? eso lo podríamos saber observando cual de estos algoritmos se ejecuta más rápido. El tiempo de ejecución puede ser mayor o menor dependiendo de la cantidad de operaciones e instrucciones que se ejecuten.

¿Como medir este tiempo?

Este tiempo lo podemos obtener mediante la diferencia entre la hora del sistema en que finalizo el algoritmo y la hora del sistema que inicio. Sí por ejemplo empezaste a leer esta entrada a las 20:03:11 y la terminaste de leer a las 20:04:52 entonces la diferencia daría como resultado 00:1:41 es decir, tardaste en leer esta entrada 1 minuto y 41 segundos.

¿Como hacerlo en Java?


Inicialmente necesitamos un método para obtener la hora o tiempo del sistema. En java contamos con el métodoSystem.currentTimeMillis(); el cual nos retorna la hora enmilisegundos.Entonces, lo que debemos hacer será declarar unavariable llamadaTInicio (tiempo de inicio) y otra llamadaTFin (Tiempo final), luego restamos TFin con TInicio y eso nos dará el tiempo de ejecución.

public class TEjecucion {
public static void main(String[] ar){
long TInicio, TFin, tiempo; //Variables para determinar el tiempo de ejecución
TInicio = System.currentTimeMillis(); //Tomamos la hora en que inicio el algoritmo y la almacenamos en la variable inicio
//ALGORITMO
//
//
//ALGORITMO
  //
//
//ALGORITMO
  //
//
//ALGORITMO
TFin = System.currentTimeMillis(); //Tomamos la hora en que finalizó el algoritmo y la almacenamos en la variable T tiempo = TFin - TInicio; //Calculamos los milisegundos de diferencia System.out.println("Tiempo de ejecución en milisegundos: " + tiempo); //Mostramos en pantalla el tiempo de ejecución en milisegundos }
}

Como podemos observar se crean 3 variables (TInicio, TFin, tiempo) de tipolong (enteros muy largos). Antes de hacer cualquier operación e incluso antes de declarar otras variables (variables pertenecientes al algoritmo) asignamos el valor del tiempo en milisegundos en ese instante a la variable TInicio, posterior a eso ejecutamos todo nuestro algoritmo y operaciones a realizar. Al final, asignamos el tiempo en milisegundos a la variable TFin, obtenemos la diferencia entre ambos tiempos e imprimimos el tiempo de ejecución en milisegundos.

Hagamos una prueba...

En la entrada sobre convertir númerosde sistema decimal a sistema binario en c++ y Java se muestran dos ejemplos para cada uno de estos lenguajes, ahora bien, tomando como ejemplo el primero de estos¿Que tan rápido puede ser este algoritmo? Midamos el tiempo de ejecución.

import java.util.Scanner;

public class DecimalABinario {
public static void main(String[] ar){
long TInicio, TFin, tiempo; //Para determinar el tiempo
TInicio = System.currentTimeMillis(); //de ejecución
Scanner teclado = new Scanner(System.in);
int dividendo, resto, divisor = 2, numero = 71; //inicializamos la variable número con el fin de que nuestro algoritmo se ejecute inmediatamente sin necesidad de introducir un valor de entrada
String binario = "";
System.out.println("Ingrese el numero decimal a convertir a sistema binario");
//numero = teclado.nextInt();
dividendo = numero;
while(dividendo = divisor){ //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
resto = dividendo % 2;
if(resto == 1)
binario = "1" + binario; //Si el resto es igual a 1 concatenamos 1 a la variable string llamada binario
else
binario = "0" + binario; // Sino concatemanos 0
//Es importante este orden de concatenación (primero el bit y luego el valor de la variable) esto para que nuestro número
//en sistema binario esté ordenado correctamente.
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
}
if(dividendo == 1)
binario = "1" + binario; // Por último sí el valor final del dividendo es 1 concatenamos 1 sino concatenamos 0.
else
binario = "0" + binario;
System.out.println("En sistema binario " + numero + " se escribe " + binario);
TFin = System.currentTimeMillis();
tiempo = TFin - TInicio;
System.out.println("Tiempo de ejecución en milisegundos: " + tiempo);
}
}

Se puede notar que es un poco distinto al algoritmo de la entrada anteriormente mencionada, esto debido a que hemos agregado el procedimiento que nos proporcionará su tiempo de ejecución. Se ha colocado la lectura del dato de entrada como un comentario (el número decimal a convertir a sistema binario) es decir, el método//numero = teclado.nextInt();así como también inicializado en 71 lavariable numero puesto que el tiempo que tarda el usuario en ingresar un valor de entrada puede variar.

Ejecución:

Ingrese el numero decimal a convertir a sistema binario
En sistema binario 71 se escribe 1000111
Tiempo de ejecución en milisegundos: 98


También te podría interesar:
De sistema decimal a sistema binario en c++ y Java
3 libros sobre programacion orientada a objetos
Curso Online Programacion Orientada a Objetos (JAVA, MVC)
Generar número aleatorio en Java Math.random()


Register Free Domains Car Donate Hire php developers asbestos mesothelioma lawsuit Donate Cars Illinois Seo services Social media strategies WordPress hosting mesothelioma claims WordPress theme designers Online casino Casino mesothelioma lawyer houston Mesothelioma Law Firm Learning adobe illustrator Social media tools EMAIL BULK SERVICE Car Insurance Quotes Php programmers for hire Best social media platforms what is structured settlement Donate your car for kids Donate Your Car for Kids Seo company mesothelioma personal injury lawyers car insurance in south dakota Mobile casino FUTURISTIC ARCHITECTURE better conferencing calls colorado mesothelioma lawyers Donate Cars in MA structured settlement buyers Social media platforms mesothelioma attorney Email bulk service Make money online Australia Best Seo company Donate Car to Charity California Criminal Defense Attorneys Florida accident attorney san bernardino Insurance WordPress themes for designers Best Criminal Lawyers in Arizona Live casino federal criminal defense attorney STRUCTURED ANNUITY SETTLEMENT asbestos exposure lawyers Nunavut Culture pharmacist jobs in chicago Dayton Freight Lines BEST CRIMINAL LAWYER IN ARIZONA Casino reviews FORENSICS ONLINE COURSE ANNUITY SETTLEMENT motorcycle accident lawyer san diego Asbestos Lung Cancer peritoneal mesothelioma Computer science classes online domain yahoo auto accident attorney Torrance data recovery raid DUI lawyer compare life assurance Business management software MET AUTO miami personal injury lawyer Donating a car in Maryland Hire php programmers new mexico mesothelioma lawyer Adobe illustrator classes PAPERPORT PROMOTIONAL CODE offshore accident lawyer Dwi lawyer DONATE CARS IN MA Forensics Online Course Holland Michigan College Criminal lawyer How to Donate A Car in California Service business software mesotheliama Criminal defense lawyer car accident lawyers los angeles Online Colleges Motor replacements Car Insurance Companies Php programmers phd in counseling education Best social media platforms for business dallas mesothelioma attorneys CAR DONATE Online motor insurance quotes DONATE YOUR CAR FOR KIDS Hire php developer car insurance companies primary pulmonary hypertension georgia truck accident lawyer car insurance quotes accident attorney in los angeles Bankruptcy lawyer structured settlement investments Psd to WordPress Seo companies michigan motorcycle accident lawyer Cheap auto insurance in VA Car Insurance Quotes PA sell structured settlement calculator Business Voip Solutions ONLINECLASSES New social media platforms Business finance group orlando criminal attorney PhD in counseling education Social media platforms for business cash out annuity google affiliate Custom WordPress theme designer Car Accident Lawyers Cheap Domain Registration Hosting miami personal injury attorney integrated ehr broward county dui lawyer Online Christmas cards google adsense Custom Christmas cards Donate Car for Tax Credit motorcycle accident attorney chicago Photo Christmas cards HOLLAND MICHIGAN COLLEGE World trade center footage accident attorneys orange county Proud Italian cook Social media examiner Business VOIP Solutions Social media management DONATING A CAR IN MARYLAND Tech school los angeles auto accident attorneys Html email DONATING USED CARS TO CHARITY Dedicated Hosting Dedicated Server Hosting Christmas cards Italian cooking school seattle mesothelioma lawyer NEUSON DONATE YOUR CAR SACRAMENTO Car Insurance Quotes Colorado Psd to html online colledges chicago hair laser removal CRIMINAL DEFENSE ATTORNEYS FLORIDA WORLD TRADE CENTER FOOTAGE donate old cars to charity Better conferencing calls Online Stock Trading Massage School Dallas Texas CAR INSURANCE QUOTES COLORADO buyers of structured settlements attorney lawyer mesothelioma canada personals yahoo mesothelioma symptoms mesothelioma lawyer texas purchase structured settlements Social media campaigns refinance with poor credit Donate your car Sacramento mesothelioma claim Donating a Car in Maryland structured annuity settlement mesothelioma Online Criminal Justice Degree Donate Your Car Sacramento life insurance co lincoln Sell Annuity Payment Donate your Car for Money SELL ANNUITY PAYMENT criminal defense attorneys florida Asbestos Lawyers Structures Annuity Settlement Royalty free images stock Annuity Settlements injury lawyers Hard drive Data Recovery Services Donate a Car in Maryland Motor Replacements auto insurance yuba city ca sell your structured settlement payments Auto Mobile Shipping Quote california law lemon dallas mesothelioma lawyer structured settlement broker How to donate a car in California structured settlement annuity companies Car Insurance Quotes Utah Life Insurance Co Lincoln Online Motor Insurance Quotes Automobile Accident Attorney Criminal lawyer Miami Nunavut culture Paperport Promotional Code Online Classes World Trade Center Footage PHD on Counseling Education Cheap Car Insurance for Ladies verizon sip Psychic for Free Donate Old Cars to Charity accident attorney orange county ONLINE MOTOR INSURANCE QUOTES Low Credit Line Credit Cards personal injury lawyer Dallas Mesothelioma Attorneys Car Insurance Quotes MN domain registration yahoo DONATE CARS ILLINOIS NUNAVUT CULTURE Cheap Auto Insurance in VA Met Auto Home Phone Internet Bundle Donating Used Cars to Charity CAR INSURANCE QUOTES MN cheap auto insurance in va Neuson PSYCHIC FOR FREE asbestos lawyers Royalty Free Images Stock Car Insurance in South Dakota Email Bulk Service Webex Costs donating used cars to charity Cheap Car Insurance in Virginia Better Conference Calls Futuristic Architecture Mortgage Adviser auto accident lawyer san francisco Virtual Data Rooms Online College Course Auto Accident Attorney caraccidentlawyer Data Recovery Raid AUTOMOBILE ACCIDENT ATTORNEY Motor Insurance Quotes Personal Injury Lawyers Auto Mobile Insurance Quote best mesothelioma lawyers new york mesothelioma law firm Injury Lawyers Personal Injury Law Firm Donate Car To Charity CALIFORNIA mesothelioma attorneys Insurance Companies

No hay comentarios:

Publicar un comentario