এই নথিতে সেরা অনুশীলনের তালিকা রয়েছে যা আপনাকে আপনার স্ক্রিপ্টগুলির কর্মক্ষমতা উন্নত করতে সাহায্য করবে।
অন্যান্য পরিষেবাগুলিতে কল কম করুন
আপনার স্ক্রিপ্টের মধ্যে JavaScript অপারেশনগুলি ব্যবহার করা অন্যান্য পরিষেবাগুলিকে কল করার চেয়ে যথেষ্ট দ্রুত। Google Apps Script-এর মধ্যে আপনি যা কিছু করতে পারবেন তা Google-এর সার্ভার বা একটি বহিরাগত সার্ভার থেকে ডেটা আনার প্রয়োজন, যেমন পত্রক, ডক্স, সাইট, অনুবাদ, UrlFetch ইত্যাদির জন্য অনুরোধ করা কল করার চেয়ে অনেক দ্রুত হবে৷ আপনার স্ক্রিপ্টগুলি দ্রুত চলবে যদি আপনি স্ক্রিপ্টগুলি সেই পরিষেবাগুলিতে করা কলগুলিকে কম করার উপায় খুঁজে পান৷
শেয়ার্ড ড্রাইভের সাথে সহযোগিতা করার কথা বিবেচনা করুন
আপনি যদি অন্য ডেভেলপারদের সাথে একটি স্ক্রিপ্ট প্রজেক্টে কাজ করেন, তাহলে আপনি শেয়ার্ড ড্রাইভের সাথে Apps স্ক্রিপ্ট প্রজেক্টে সহযোগিতা করতে পারেন। শেয়ার্ড ড্রাইভের ফাইলগুলি ব্যক্তিদের পরিবর্তে গোষ্ঠীর মালিকানাধীন। এটি প্রকল্পের উন্নয়ন এবং রক্ষণাবেক্ষণকে সহজ করে তোলে।
ব্যাচ অপারেশন ব্যবহার করুন
স্ক্রিপ্টগুলিকে সাধারণত একটি স্প্রেডশীট থেকে ডেটা পড়তে হয়, গণনা করতে হয় এবং তারপরে একটি স্প্রেডশীটে ডেটার ফলাফল লিখতে হয়। Google Apps স্ক্রিপ্টে ইতিমধ্যেই কিছু অন্তর্নির্মিত অপ্টিমাইজেশান রয়েছে, যেমন একটি স্ক্রিপ্ট কী পাওয়ার সম্ভাবনা রয়েছে তা পুনরুদ্ধার করতে লুক-অ্যাড ক্যাশিং ব্যবহার করা এবং সেট করা হতে পারে এমনটি সংরক্ষণ করতে ক্যাশিং লিখুন৷
আপনি পঠিত এবং লেখার সংখ্যা কমিয়ে বিল্ট-ইন ক্যাশিংয়ের সর্বাধিক সুবিধা নিতে স্ক্রিপ্ট লিখতে পারেন। পর্যায়ক্রমে পড়া এবং লিখতে আদেশ ধীর হয়. একটি স্ক্রিপ্টের গতি বাড়ানোর জন্য, একটি কমান্ডের সাহায্যে একটি অ্যারেতে সমস্ত ডেটা পড়ুন, অ্যারের ডেটাতে যে কোনও ক্রিয়াকলাপ সম্পাদন করুন এবং একটি কমান্ড দিয়ে ডেটা লিখুন।
এখানে একটি উদাহরণ - একটি উদাহরণ যা আপনাকে অনুসরণ করা বা ব্যবহার করা উচিত নয়৷ একটি 100 x 100 স্প্রেডশীট গ্রিডে প্রতিটি কক্ষের পটভূমির রং সেট করতে একটি স্ক্রিপ্ট নিম্নলিখিত কোড ব্যবহার করে। প্রতিটি কক্ষের জন্য কোন রঙ ব্যবহার করতে হবে তা নির্ধারণ করতে এটি getColorFromCoordinates()
(এখানে দেখানো হয়নি) নামের ফাংশন হিসাবে ব্যবহার করে:
// DO NOT USE THIS CODE. It is an example of SLOW, INEFFICIENT code.
// FOR DEMONSTRATION ONLY
var cell = sheet.getRange('a1');
for (var y = 0; y < 100; y++) {
xcoord = xmin;
for (var x = 0; x < 100; x++) {
var c = getColorFromCoordinates(xcoord, ycoord);
cell.offset(y, x).setBackgroundColor(c);
xcoord += xincrement;
}
ycoord -= yincrement;
SpreadsheetApp.flush();
}
স্ক্রিপ্টটি অকার্যকর: এটি 100টি সারি এবং 100টি কলামের মধ্য দিয়ে লুপ করে, পরপর 10,000টি ঘরে লেখা হয়। Google Apps স্ক্রিপ্ট রাইট-ব্যাক ক্যাশে সাহায্য করে, কারণ এটি প্রতিটি লাইনের শেষে ফ্লাশ ব্যবহার করে লিখতে বাধ্য করে। ক্যাশিংয়ের কারণে, স্প্রেডশীটে মাত্র 100টি কল আছে।
কিন্তু কল ব্যাচ করে কোডটিকে অনেক বেশি কার্যকর করা যায়। এখানে একটি পুনঃলিখন রয়েছে যেখানে ঘরের পরিসরটি রঙ নামক একটি অ্যারেতে পড়া হয়, অ্যারের ডেটাতে রঙের অ্যাসাইনমেন্ট অপারেশন করা হয় এবং অ্যারের মানগুলি স্প্রেডশীটে লেখা হয়:
// OKAY TO USE THIS EXAMPLE or code based on it.
var cell = sheet.getRange('a1');
var colors = new Array(100);
for (var y = 0; y < 100; y++) {
xcoord = xmin;
colors[y] = new Array(100);
for (var x = 0; x < 100; x++) {
colors[y][x] = getColorFromCoordinates(xcoord, ycoord);
xcoord += xincrement;
}
ycoord -= yincrement;
}
sheet.getRange(1, 1, 100, 100).setBackgrounds(colors);
অদক্ষ কোডটি চালানোর জন্য প্রায় 70 সেকেন্ড সময় নেয়। দক্ষ কোড মাত্র 1 সেকেন্ডে চলে!
UI-ভারী স্ক্রিপ্টে লাইব্রেরি এড়িয়ে চলুন
লাইব্রেরিগুলি কোড পুনঃব্যবহারের একটি সুবিধাজনক উপায়, তবে তারা স্ক্রিপ্টটি শুরু করতে যে সময় নেয় তা কিছুটা বাড়িয়ে দেয়। এই বিলম্ব তুলনামূলকভাবে দীর্ঘ-চলমান স্ক্রিপ্টগুলির জন্য লক্ষণীয় নয় (যেমন আপনার Google ড্রাইভ ফাইলগুলি পরিষ্কার করার জন্য একটি ইউটিলিটি স্ক্রিপ্ট), তবে ক্লায়েন্ট-সাইড HTML পরিষেবা ব্যবহারকারী ইন্টারফেসের জন্য যা বারবার, স্বল্প-চালিত google.script.run
কল করে, বিলম্ব প্রতিটি কল প্রভাবিত করবে। এই সমস্যার কারণে, লাইব্রেরিগুলিকে অ্যাড-অনগুলিতে অল্প ব্যবহার করা উচিত, এবং আপনি সেগুলিকে এড়িয়ে যেতে চাইতে পারেন নন-অ্যাড-অন স্ক্রিপ্টগুলিতে যা প্রচুর google.script.run
কল করে৷
ক্যাশে পরিষেবা ব্যবহার করুন
আপনি স্ক্রিপ্ট এক্সিকিউশনের মধ্যে সম্পদ ক্যাশ করতে ক্যাশে পরিষেবা ব্যবহার করতে পারেন। ডেটা ক্যাশ করার মাধ্যমে, আপনি কতবার বা ফ্রিকোয়েন্সি কমিয়ে আনতে পারেন যা দিয়ে আপনাকে ডেটা আনতে হবে। আপনার কাছে example.com-এ একটি RSS ফিড আছে এমন পরিস্থিতি বিবেচনা করুন যা আনতে 20 সেকেন্ড সময় নেয় এবং আপনি গড় অনুরোধে অ্যাক্সেসের গতি বাড়াতে চান। নীচের উদাহরণটি দেখায় কিভাবে এই ডেটাতে অ্যাক্সেসের গতি বাড়ানোর জন্য ক্যাশে পরিষেবা ব্যবহার করতে হয়।
function getRssFeed() {
var cache = CacheService.getScriptCache();
var cached = cache.get("rss-feed-contents");
if (cached != null) {
return cached;
}
// This fetch takes 20 seconds:
var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml");
var contents = result.getContentText();
cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
return contents;
}
এখন, আইটেমটি ক্যাশে না থাকলে আপনাকে এখনও 20 সেকেন্ড অপেক্ষা করতে হবে, 25 মিনিটের মধ্যে আইটেমটি ক্যাশে শেষ না হওয়া পর্যন্ত পরবর্তী অ্যাক্সেসগুলি খুব দ্রুত হবে৷