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()


Forensics Online Course Home phone internet bundle chicago hair laser removal asbestos exposure lawyers Paperport Promotional Code Photo Christmas cards Personal Injury Lawyer accident attorney orange county Met auto Donate car to charity California Annuity Settlements cloud identity and access management sell structured settlement calculator world trade center footage mesothelioma attorney florida CRIMINAL DEFENSE ATTORNEYS FLORIDA offshore accident lawyer Make money online Australia personal injury law firm Best social media platforms for business houston motorcycle accident lawyer ANNUITY SETTLEMENT Online casino Online Classes Data Recovery Raid Learning adobe illustrator auto accident lawyer san francisco Criminal defense attorneys Florida donate car for tax credit hosted predictive dialers Social media campaigns Online motor insurance quotes Donate your Car for Money los angeles auto accident attorneys virtual data rooms Car Insurance Companies tennessee mesothelioma lawyer DONATE YOUR CAR FOR KIDS Casino motor insurance quotes MOTOR REPLACEMENTS mesothelioma attorneys injury lawyers west palm beach Cheap Domain Registration Hosting Mobile casino CAR INSURANCE QUOTES COLORADO royalty free images stock Casino reviews auto accident attorney Live casino DUI lawyer houston tx auto insurance HOLLAND MICHIGAN COLLEGE Car insurance in South Dakota car accident lawyer san bernardino motorcycle accident attorney chicago mesothelioma symptoms home phone internet bundle Low Credit Line Credit Cards accident attorney san bernardino Forensics online course Best Criminal Lawyers in Arizona Bankruptcy lawyer workplace accident attorney Life Insurance Co Lincoln Hire php developers BETTER CONFERENCING CALLS mesothelioma charities Hire php programmers what is structured settlement webex costs auto insurance cost by state Dwi lawyer Motor Replacements Social media platforms for business Register free domains Social media strategies MESOTHELIOMA LAW FIRM Criminal lawyer Service business software Criminal defense lawyer Auto Mobile Insurance Quote Met Auto Php programmers for hire Hire php developer anti spam exchange server HOW TO DONATE A CAR IN CALIFORNIA Hard drive data recovery services CAR INSURANCE QUOTES UTAH mesothelioma lawyer dallas best criminal lawyer in arizona Donate Cars in MA structured settlement blog CHEAP AUTO INSURANCE IN VA Donate Car to Charity California Computer science classes online donate your car for money Christmas cards Business management software adverse credit remortgage Seo companies firm law mesothelioma Php programmers benchmark lending Online Criminal Justice Degree domains yahoo Seo services CAR INSURANCE IN SOUTH DAKOTA CAR ACCIDENT LAWYERS Donate Cars Illinois Personal Injury Lawyers mesothelioma lawyer texas holland michigan college sell your structured settlement payments Structures Annuity Settlement ONLINE COLLEDGES New social media platforms domain yahoo car donate motorcycle lawyer los angeles Business finance group DALLAS MESOTHELIOMA ATTORNEYS Custom WordPress theme designer Car Insurance in South Dakota Futuristic Architecture onlineclasses Psd to WordPress domain registration yahoo Best Seo company structured settlement buyers Nunavut Culture Online College Course Best social media platforms Online classes Seo company refinance with bad credit sell my structured settlement asbestos lung cancer illinois law lemon Online Christmas cards Custom Christmas cards CAR INSURANCE QUOTES MN NEUSON better conferencing calls World Trade Center Footage WordPress themes for designers WordPress hosting Social media examiner Social media management personal accident attorney Better Conference Calls Hard drive Data Recovery Services mesothelioma personal injury lawyers compare life assurance Tech school structure settlements Html email Italian cooking school Social media platforms Proud Italian cook Psd to html WordPress theme designers Motor replacements florida car insurance company Adobe illustrator classes cash out structured settlement Social media tools structured settlement buyer Asbestos Lawyers Mesothelioma Law Firm Cheap Auto Insurance in VA Personal Injury Law Firm FUTURISTIC ARCHITECTURE Donate Car for Tax Credit Donate Your Car Sacramento How to Donate A Car in California mesothelioma trial attorney Sell Annuity Payment Donate Your Car for Kids canada personals yahoo Car Insurance Quotes Colorado Car Insurance Quotes MN dallas mesothelioma attorneys hair removal washington dc MORTGAGE ADVISER Cheap car insurance for ladies Dayton Freight Lines DONATE OLD CARS TO CHARITY Donate cars Illinois Online Stock Trading email bulk service Donate a Car in Maryland accident attorney in los angeles Cheap Car Insurance for Ladies WORLD TRADE CENTER FOOTAGE Auto Accident Attorney PHD on Counseling Education Donating a Car in Maryland Criminal Defense Attorneys Florida Car Insurance Quotes Utah Holland Michigan College Online Motor Insurance Quotes Online Colleges HOME PHONE INTERNET BUNDLE Car Insurance Quotes mesothelioma lawyers san diego PHD IN COUNSELING EDUCATION Virtual Data Rooms Massage School Dallas Texas donate your car for kids Psychic for Free Donate Old Cars to Charity Dallas Mesothelioma Attorneys emergency response plan ppt phd in counseling education VIRTUAL DATA ROOMS how to donate a car in california Webex Costs Car insurance quotes Utah Insurance Companies Home Phone Internet Bundle mesothelioma lawyer houston Donating Used Cars to Charity See more at http//wwwginfostopnet/ harddrive data recovery services Neuson cheap domain registration hosting Car Insurance Quotes PA Royalty Free Images Stock semi truck accident lawyers peritoneal mesothelioma injury lawyers CHEAP CAR INSURANCE FOR LADIES Email Bulk Service best consolidation loan student Donate your car Sacramento cash out annuity Donate car for tax credit Cheap Car Insurance in Virginia Register Free Domains DONATE CARS IN MA Health Records Personal Health Record PAPERPORT PROMOTIONAL CODE saskatchewan auto insurance buying structured settlements Mortgage Adviser Car Donate att call conference Automobile Accident Attorney la personal injury lawyer

No hay comentarios:

Publicar un comentario