Hier eine kleine Testapplikation:
Code: Alles auswählen
public class Test
{
public static void main( String[] args)
{
for( int k= 0; k< 3; k++) // k-Schleife
{
long t1= System.currentTimeMillis();
{
float a= 1;
for( int i= 0; i< 10000000; i++)
a*=1.0000001;
//System.out.println( ""+ a);
}
long t2= System.currentTimeMillis();
{
double a= 1;
for( int i= 0; i< 10000000; i++)
a*=1.0000001;
//System.out.println( ""+ a);
}
long t3= System.currentTimeMillis();
System.out.println( ""+ ( t2- t1)); // java1.1.8: 788/ 1052 in k schleife, java1.4: 236/ 193 in k
System.out.println( ""+ ( t3- t2)); // java1.1.8: 734/ 708 in k schleife, java1.4: 113/ 110 in k
}
}
}
Nachtrag: Ich habe jetzt aber eine Idee dazu: es könnte sein, daß (für den unteren Fall, nicht das Hauptthema double<->float) k ein 'CPU'-Register in der VM reserviert, auf welchem vorher a lag. 'a' ist im langsameren Fall im Speicher.
weedy.