Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/06/2006, 01:41
bernadelpradoclaves
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 19 años, 1 mes
Puntos: 1
Tiempo utilizado en ordenar un array

Hola a todos,

Tengo un servlet que tiene un array y lo que hago es ordenarlo. Tengo una plataforma de desarrollo y otra de producción. Lo estoy problando en 2 maquinas diferentes. En una de las máquinas (que tiene menos procesador que el otro) tarda 2 segundos mientras que en el otro (que es tiene más memoria RAM y más procesador) tarda 23 segundos.

Los array tienen 7000 elementos. El código es el siguiente:

///////////////////////////////////////////////////////////////////////////*///////////////////////////////
java.util.Date datTiempoInicio, datTiempoFin;
java.util.Calendar calTiempoInicio = Calendar.getInstance();
java.util.Calendar calTiempoFin = Calendar.getInstance();
long intTiempoUtilizado;
datTiempoInicio = new java.util.Date();
calTiempoInicio.setTime(datTiempoInicio );


if (astrName.length > 1) {
//ordenacion de los arrays: astrName[intFilaArray]
int i, pasadas;
String strTemp;
double dblIntensityTemp;
double dblBackgroundTemp;
int intComparacion;
for (pasadas = 1; pasadas < astrName.length; pasadas++) {
for (i = 0; i<astrName.length - 1; i++) {
intComparacion = astrName[i].compareTo(astrName[i+1]);
if (intComparacion > 0) {
strTemp = astrName[i];
astrName[i] = astrName[i + 1];
astrName[i + 1] = strTemp;


dblIntensityTemp = adblIntensity1[i];
adblIntensity1[i] = adblIntensity1[i + 1];
adblIntensity1[i + 1] = dblIntensityTemp;


dblIntensityTemp = adblIntensity2[i];
adblIntensity2[i] = adblIntensity2[i + 1];
adblIntensity2[i + 1] = dblIntensityTemp;


dblBackgroundTemp = adblBackground1[i];
adblBackground1[i] = adblBackground1[i + 1];
adblBackground1[i + 1] = dblBackgroundTemp;


dblBackgroundTemp = adblBackground2[i];
adblBackground2[i] = adblBackground2[i + 1];
adblBackground2[i + 1] = dblBackgroundTemp;
} // end if (intComparacion > 0)
} //end for i
} //end for pasadas


} // end if (astrName.length > 1)


datTiempoFin = new java.util.Date();
calTiempoFin.setTime(datTiempoFin );


intTiempoUtilizado = Math.abs( (calTiempoFin.getTimeInMillis() -
calTiempoInicio.getTimeInMillis()) / (1000) );
System.out.println("(ProcessFile) Time = " + intTiempoUtilizado );


///////////////////////////////////////////////////////////////////////////*/////////////////////


¿Puede ser algo de la configuración que tengo diferente?
¿puede ser algo del metodo compareTo?
Necesito ayuda, please.

Gracias.