/** <p>Titre : MesureDeDuree1.java </p>
 * <p>Description : Emploi d'une classe abstraite pour mesurer la durée effective d'exécution avec 'nanotime'</p>
 * <p>Copyright : (c) ~/2a env.  ESSTIN </p>
 * @author   H. Nguyen-Phu
 * @version 1.3  10.10.2009
 * @since   1.0  16.01.2003
 */
import java.io.*;

/** <p>MesureDeDuree1 : classe abstraite  qui dérive de 'MesureDeDuree' </p>    */
public abstract class MesureDeDuree1  extends MesureDeDuree  {


         /**
         * Constructeur 'MesureDeDuree1' sans argument
         */
        MesureDeDuree1()  	{
 	 long dateDeb, dateFin;

	 int Km = Integer.MAX_VALUE;

	 dateDeb = System.nanoTime();
	   for(int i=0; i<Km; i++)
	   	res = TraitementAVide();
	 dateFin = System.nanoTime();

	 double T_res = ((double) (dateFin-dateDeb))/Km*1e-09;

	 jo.printf("Duree re'siduelle =  %d  ns => T_res = %10.3E  s!\n", (dateFin-dateDeb), T_res );

	 dateDeb = System.nanoTime();
	   for(int i=0; i<Kmax; i++)
		   res = TraitementAMesurer();
	 dateFin = System.nanoTime();

	 jo.printf("Duree totale ('System.nanoTime()') = %d  nanosecondes !", dateFin-dateDeb);
	 jo.printf("\n\t\t=> Dure'e effective = %8.2f nanoseconde(s)\n\n", ((double) (dateFin-dateDeb)/Kmax - T_res*1e+09) );
	}
}
