Java में कोड ऑप्टिमाइज़ करना
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
स्पेस कॉम्प्लेक्सिटी समझना उन ऐप्लिकेशनों के लिए ज़रूरी है जो:
OutOfMemoryError जैसी त्रुटियों से बचेंनोटेशन टाइम कॉम्प्लेक्सिटी जैसा ही है।
कुछ आम कॉम्प्लेक्सिटी क्लास:
O(1): Constant time - साइज से स्वतंत्रO(n): Linear time - इनपुट साइज के साथ बढ़ता हैO(n²): Quadratic time - इनपुट साइज के वर्ग के साथ बढ़ता हैpublic int findMax(int[] array) {
int max = Integer.MIN_VALUE;
for (int value : array) {
if (value > max) {
max = value;
}
}
return max;
}
चाहे हमारे integer array में 10 हों या 10 million एलिमेंट, हम फिर भी केवल एक वैरिएबल max के लिए मेमोरी लेते हैं
स्पेस कॉम्प्लेक्सिटी O(1) या constant space है
public int[] doubleValues(int[] array) {
int[] result = new int[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i] * 2;
}
return result;
}
n एलिमेंट हैं, तो हमें n अतिरिक्त एलिमेंट के लिए स्पेस चाहिएO(n) है क्योंकि अतिरिक्त मेमोरी इनपुट साइज के साथ रैखिक रूप से बढ़ती हैpublic int[][] multiplicationTable(int n) {
int[][] table = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
table[i][j] = (i + 1) * (j + 1);
}
}
return table;
}
n 10 है, तो 100 सेल चाहिए; अगर n 100 है, तो 10,000 सेल चाहिएO(n²) के रूप में वर्गीकृत करते हैंमेमोरी सीमित संसाधन है!
पिछले उदाहरण, 10,000 एलिमेंट के इनपुट पर:
findMax, O(1) -> बस कुछ अतिरिक्त bytesdoubleValues, O(n) -> लगभग 40KB अतिरिक्त मेमोरीmultiplicationTable, O(n²) -> लगभग 400MB अतिरिक्त मेमोरी
याद रखें:

Java में कोड ऑप्टिमाइज़ करना