Когда я прочитал об оптимизации, я рассказал о разворачивании цикла. Сделав небольшой поиск в Google, я не нашел, если это делает компилятор Java.Производительность Java - цикл разворачивания
Таким образом, лучший способ - попробовать, если я сам.
На самом деле я был совершенно удивлен фактом, что на самом деле, выполняя этот цикл разворачивания, мне удалось ускорить его, так как я был совершенно уверен, что современные компиляторы делают это для меня.
public static void folded() {
System.out.println("Folded:");
long c1 = System.currentTimeMillis();
for (int r = 0; r < 10; r++) {
for (int i = 0; i < 500000; i++) {
Math.sin(i);
}
}
System.out.println(System.currentTimeMillis() - c1);
}
public static void unFolded() {
System.out.println("Unfolded:");
long c1 = System.currentTimeMillis();
for (int r = 0; r < 10; r++) {
for (int i = 0; i < 500000; i += 10) {
Math.sin(i);
Math.sin(i + 1);
Math.sin(i + 2);
Math.sin(i + 3);
Math.sin(i + 4);
Math.sin(i + 5);
Math.sin(i + 6);
Math.sin(i + 7);
Math.sin(i + 8);
Math.sin(i + 9);
}
}
System.out.println(System.currentTimeMillis() - c1);
}
РЕЗУЛЬТАТ (СЧЕТЧИК 500'000):
Сложенный: 453
разложенном: 114
РЕЗУЛЬТАТ (СЧЕТЧИК 5'000'000):
Сложенный: 13850
Undefined: 11929
И чем я должен доверять? Ручная оптимизация или компиляторы? Поскольку в этом тесте мой результат показывает, что оптимизация вручную кажется лучше.
Я голосующий, чтобы закрыть этот вопрос как не относящийся к теме, потому что это вопрос оптимизации кода, который может быть лучше связан с http://codereview.stackexchange.com/ – Freiheit
Если вы действительно хотите сделать такие тесты, у вас есть для изучения инструкций через 'javap' –
Рассмотрите возможность чтения http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java. – bradimus