जावास्क्रिप्ट में चक्रीय ऑपरेशनों का अनुकूलन
यहां तक कि एक हल्का ऑपरेशन, जिसे लूप में बार-बार दोहराया जाता है, बहुत सारे संसाधन ले सकता है।
आइए एक उदाहरण देखें। मान लीजिए कि हमारे पास एक निश्चित सरणी दी गई है:
let arr = [1, 2, 3, 4, 5, 6];
आइए इस सरणी के तत्वों का औसत ज्ञात करें। इसके लिए तत्वों के योग को ज्ञात करके उसे मात्रा से विभाजित करना होगा। मान लीजिए कि कोई प्रोग्रामर पहले ही इस कार्य को निम्नलिखित तरीके से हल कर चुका है:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
आइए ऐसे समाधान की समस्याओं पर गौर करें। तकनीकी रूप से कोड सही ढंग से काम करता है और सही उत्तर देता है। बात यह है कि गणितीय रूप से यह सही है कि पूरी राशि को मात्रा से विभाजित किया जाए, और प्रत्येक योगज को मात्रा से विभाजित किया जाए।
हालाँकि, एक और समस्या उत्पन्न होती है। बात यह है कि हम विभाजन तब तक करेंगे जब तक हमारी सरणी में कितने तत्व हैं। और यह पता चलता है कि हम अनावश्यक ऑपरेशनों की एक बड़ी संख्या कर रहे हैं, क्योंकि विभाजन अंत में किया जा सकता था - केवल एक बार, पूरी मिली हुई राशि को विभाजित करके।
आइए अपने कोड का अनुकूलन करें:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);
निम्नलिखित कोड का अनुकूलन करें:
for (let i = 1900; i <= 2100; i++) {
let curr = new Date;
let date = new Date(i, curr.getMonth(), curr.getDate());
if (curr.getDay() === date.getDay()) {
console.log(date);
}
}
निम्नलिखित कोड का अनुकूलन करें:
let obj = {a: 10, b: 20, c: 30, d: 40, e: 50};
let sum = 0;
for (let key in obj) {
if (String(obj[key])[0] === '1' || String(obj[key])[0] === '2') {
sum += obj[key];
}
}
console.log(sum);