কর্মক্ষমতা

পার্ল-এর জন্য ক্লায়েন্ট লাইব্রেরিটি আপনার পক্ষ থেকে ন্যূনতম কনফিগারেশনের মাধ্যমে গুগল অ্যাডস এপিআই-এর সাথে ইন্টারঅ্যাকশন সহজ করে। তবে, এর পারফরম্যান্স অনেকাংশে নির্ভর করে লাইব্রেরিটি কীভাবে ব্যবহার ও ইন্টিগ্রেট করা হচ্ছে তার উপর।

বেশিরভাগ সাধারণ সেরা অনুশীলন সব ভাষার ক্ষেত্রেই প্রযোজ্য। এই পৃষ্ঠায় পার্ল-এর জন্য নির্দিষ্ট পারফরম্যান্স নির্দেশিকা আলোচনা করা হয়েছে।

আপনার অ্যাপ্লিকেশনটি প্রোফাইল করুন

পারফরম্যান্সের প্রতিবন্ধকতা শনাক্ত করতে আপনার অ্যাপ্লিকেশনের সিপিইউ এবং মেমরি ব্যবহারের প্রোফাইল তৈরি করুন। Devel::NYTProf হলো একটি বৈশিষ্ট্য-সমৃদ্ধ পার্ল সোর্স কোড প্রোফাইলার যা আপনি এক্সিকিউশন টাইম বিশ্লেষণ করতে ব্যবহার করতে পারেন।

পার্ল সংস্করণ

রানটাইম পারফরম্যান্সের উন্নতির সুবিধা পেতে নিয়মিতভাবে পার্লের নতুন সংস্করণে আপগ্রেড করুন। CPAN পার্ল সোর্স রিলিজ থেকে সর্বশেষ রিলিজটি ডাউনলোড করুন এবং README রিকোয়ারমেন্টস -এ লাইব্রেরির জন্য ন্যূনতম প্রয়োজনীয় সংস্করণটি দেখে নিন।

লগিং

ব্যাপক লগিংয়ের ফলে এক্সিকিউশন টাইম এবং মেমরি খরচ উল্লেখযোগ্যভাবে বেড়ে যেতে পারে। প্রোডাকশনে থাকা যেকোনো কোডের জন্য লগিং লেভেল WARN এ সেট করুন।

সামারি এবং ডিটেইল লগার কনফিগার করার বিষয়ে আরও বিস্তারিত জানতে লগিং গাইড দেখুন।

সার্চস্ট্রিম বনাম সার্চ

গুগল অ্যাডস এপিআই অবজেক্ট পুনরুদ্ধার করার জন্য দুটি প্রধান পদ্ধতি প্রদান করে: Search (যা পেজিনেশন ব্যবহার করে) এবং SearchStream (যা স্ট্রিমিং ব্যবহার করে)। SearchStream Search চেয়ে ভালো পারফরম্যান্স দেয়, যদিও কিছু নির্দিষ্ট পরিস্থিতিতে Search বেশি সুবিধাজনক হতে পারে।

দুটি পদ্ধতির বিস্তারিত তুলনার জন্য স্ট্রিমিং গাইডটি দেখুন।

পেলোড অপ্টিমাইজেশন এবং ব্যাচিং

নেটওয়ার্ক ওভারহেড এবং মেমরি ব্যবহার কমাতে:

  • আপনার গুগল অ্যাডস কোয়েরি ল্যাঙ্গুয়েজ (GAQL) কোয়েরিতে, আপনার অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় নির্দিষ্ট ফিল্ডগুলোই শুধু অনুরোধ করুন।
  • প্রতিটি পরিবর্তনের জন্য আলাদা আলাদা অনুরোধ না পাঠিয়ে, একাধিক mutate অপারেশনকে একটিমাত্র অনুরোধে একত্রিত করুন।

HTTP টাইমআউট

পার্ল ক্লায়েন্ট লাইব্রেরিটি ক্লায়েন্ট পর্যায়ে HTTP টাইমআউট কনফিগার করার জন্য একটি সেটিং প্রদান করে:

my $api_client = Google::Ads::GoogleAds::Client->new({
  # Set HTTP timeout to 5 minutes (300 seconds).
  http_timeout => 300,
});

ডিফল্ট মান হলো 3600 সেকেন্ড (১ ঘন্টা), যা Constants.pm এ থাকা DEFAULT_HTTP_TIMEOUT কনস্ট্যান্টের উপর ভিত্তি করে সেট করা হয়। কোনো এপিআই কলের সর্বোচ্চ সময়ের উপর একটি সংক্ষিপ্ত সীমা আরোপ করার প্রয়োজন হলে একটি কাস্টম ক্লায়েন্ট টাইমআউট সেট করুন ।

আপনি টাইমআউট ২ ঘন্টা বা তার বেশি সেট করতে পারেন, কিন্তু তারপরেও এপিআই অত্যন্ত দীর্ঘ সময় ধরে চলা অনুরোধগুলোকে টাইমআউট করে দিতে পারে এবং একটি DEADLINE_EXCEEDED ত্রুটি ফেরত দিতে পারে। যদি আপনি এই ত্রুটির সম্মুখীন হন, তবে অনুরোধটিকে ছোট ছোট অংশে ভাগ করুন এবং সেগুলোকে সমান্তরালভাবে চালান। এর ফলে এমন পরিস্থিতি এড়ানো যায় যেখানে একটি দীর্ঘ সময় ধরে চলা অনুরোধ ব্যর্থ হয় এবং তা থেকে পুনরুদ্ধারের একমাত্র উপায় হলো অনুরোধটি আবার শুরু থেকে চালানো।