Я проводил тесты уже около 15 минут, и на всякий случай ничего не происходило, кроме затмения, и я увидел реальную разницу, вы можете попробовать это.
Когда я попытался определить, сколько времени займет Java, чтобы сделать «ничего», мне потребовалось около 500 наносекунд, чтобы получить идею.
Затем я проверил, сколько времени потребуется для выполнения оператора for
, где он увеличивается:
for(i=0;i<100;i++){}
Затем пять минут спустя я попробовал «задом наперед»:
for(i=100;i>0;i--)
И у меня есть огромная разница (в крошечном крошечном уровне) 16% между первым и вторым for
утверждениями, причем последнее на 16% быстрее.
Среднее время выполнения «возрастающего» оператора for
во время 2000 тестов: 1838 н / с
Среднее время выполнения «уменьшающегося» оператора for
во время 2000 тестов: 1555 н / с
Код, используемый для таких испытаний:
public static void main(String[] args) {
long time = 0;
for(int j=0; j<100; j++){
long startTime = System.nanoTime();
int i;
/*for(i=0;i<100;i++){
}*/
for(i=100;i>0;i--){
}
long endTime = System.nanoTime();
time += ((endTime-startTime));
}
time = time/100;
System.out.print("Time: "+time);
}
Вывод:
Разница, по сути, ничтожна, уже требуется значительное количество «ничего», чтобы «ничего не делать» по отношению к тестам операторов for
, что делает разницу между ними незначительной, просто время, затрачиваемое на импорт библиотеки, такой как java.util.Scanner требует гораздо больше загрузки, чем выполнение оператора for
, это не приведет к значительному повышению производительности вашего приложения, но все же это действительно здорово знать.