Оптимізація коду в Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Це обмеження, що стримують швидкість і ефективність застосунку.
Уявіть лійку: найвужче місце визначає швидкість потоку!

System.nanoTime() — високоточне вимірювання часуlongSystem.currentTimeMillis(), вимірює час настінного годинника$$
long startTime = System.nanoTime();
// Code to measure
long endTime = System.nanoTime();
long duration = endTime - startTime;
// Вимірювання продуктивності ArrayList.contains() import java.util.ArrayList; import java.util.List; List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 100000; i++) { numbers.add(i); }long startTime = System.nanoTime(); boolean found = numbers.contains(99999); // O(n) операція long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("Time taken: " + duration + " ns");
// Convert to milliseconds
System.out.println("Time taken: " + duration / 1_000_000.0 + " ms");
Time taken: 1239000000 ns
Time taken: 1239ms
ArrayList.contains() має складність O(n)long totalTime = 0;
for (int i = 0; i < 3; i++) {
long start = System.nanoTime();
findElementLinear(data, target);
long iterationTime = System.nanoTime() - start;
totalTime += iterationTime;
System.out.println("Run " + (i+1) + ": " + iterationTime + " ns");
}
double averageTime = totalTime / 3.0;
System.out.println("Average: " + (long)averageTime + " ns");
Run 1: 3245678 ns
Run 2: 3198432 ns
Run 3: 3301234 ns
Average: 3248448 ns
// Припустимо, що avgTimeA і avgTimeB вже обчислені
System.out.println("Operation A is" + (avgTimeA / avgTimeB) + "x slower");
Operation A is 4x slower
Оптимізація коду в Java