Diğer bazı kodları/anlayışlarımı test etmek için sonsuz döngüler yapmakla uğraştım ve bu garip davranışa rastladım. 0'dan 2^24 sayma Aşağıdaki program içinde benim makinede < 100ms alır, ancak 2^25 sayma (, hala yürütme oluyor yazma anda) büyüklüğü daha zamanın emir alır.Neden 2^24'e kadar saymak hızlı bir şekilde çalışıyor, ancak 2^25'e kadar saymak daha uzun sürüyor?
Bu neden böyle?
Bu,
Windows'un 10.
64-bit kopya üzerinde, Java 1.8.0_101 altında TestClass.javapublic class TestClass {
public static void main(String[] args) {
addFloats((float) Math.pow(2.0, 24.0));
addFloats((float) Math.pow(2.0, 25.0));
}
private static void addFloats(float number) {
float f = 0.0f;
long startTime = System.currentTimeMillis();
while(true) {
f += 1.0f;
if (f >= number) {
System.out.println(f);
System.out.println(number + " took " + (System.currentTimeMillis() - startTime) + " msecs");
break;
}
}
}
}
sadece addFloats ((şamandıra) Math.pow (2.0, 25.0)) çalıştıran çalıştı görüyorum mattering ;? –
Çünkü bir an f + 1,0 == f. –
@OlegEstekhin Ahh, bu olacak. Ben bir aptalım. Teşekkürler! –