ফ্রেম রেট

গড় এফপিএস

অ্যান্ড্রয়েড ডিভাইসে একটি উচ্চ-মানের গেমিং অভিজ্ঞতা প্রদানের জন্য একটি মসৃণ এবং স্থিতিশীল ফ্রেম রেট অত্যন্ত গুরুত্বপূর্ণ। গেমের পারফরম্যান্স পরিমাপ করার সময়, অভিজ্ঞতা সম্পর্কে একটি প্রাথমিক ধারণা পেতে আপনার গড় FPS-কে ভিত্তি হিসেবে পরিমাপ করা উচিত। একটি দুর্দান্ত গেমিং অভিজ্ঞতা নিশ্চিত করতে আপনার গেমটিকে ৬০ FPS-এর গড় ফ্রেম রেট পূরণের জন্য অপ্টিমাইজ করা উচিত।

স্থিতিশীলতার জন্য P90 এবং P99 FPS

গড়ে মসৃণ ৬০ এফপিএস থাকা সত্ত্বেও, একটি গেমে মাঝে মাঝে বাধা, মাইক্রো-স্টাটারিং এবং অপ্রত্যাশিত ইনপুট ল্যাগ দেখা দিতে পারে, যার ফলে খেলোয়াড়ের অভিজ্ঞতা খারাপ হয়।

সুতরাং, গড় ফ্রেম রেট ট্র্যাক করার মতোই ফ্রেম স্ট্যাবিলিটিও অত্যন্ত গুরুত্বপূর্ণ। এখানেই আপনার যথাক্রমে একটি ধারাবাহিক বেসলাইন এবং স্টাটার ইন্ডিকেটর হিসেবে P90 এবং P99 ফ্রেম রেট মেট্রিকগুলো পরিমাপ করা উচিত। এই মেট্রিকগুলো পারফরম্যান্সের একেবারে শেষ পর্যায়টি তুলে ধরে, যা আপনাকে প্লেয়ারের অভিজ্ঞতার মসৃণতা অপ্টিমাইজ করতে সাহায্য করে।

মেট্রিক্স

  • গড় FPS (বেসলাইন) : এই মৌলিক মেট্রিকটি আপনার গেমের পারফরম্যান্সের একটি সাধারণ বেসলাইন প্রদান করে। যদিও এটি একটি স্ট্যান্ডার্ড বেঞ্চমার্ক, গড় গণনার কারণে এতে মাঝে মাঝে ফ্রেম ড্রপ এবং মাইক্রো-স্টাটারিং শনাক্ত করা যায় না, ফলে এটি এককভাবে প্লেয়ারের অভিজ্ঞতাকে তুলে ধরার জন্য অপর্যাপ্ত।
  • P90 FPS (১০% পার্সেন্টাইলে সামঞ্জস্যপূর্ণ বেসলাইন) : এটি নির্দেশ করে যে আপনার ৯০% ফ্রেম এই সামঞ্জস্যপূর্ণ বেসলাইনকে অতিক্রম করেছে, এবং শুধুমাত্র সবচেয়ে ধীরগতির ১০% ফ্রেম রেন্ডার হতে বেশি সময় নিয়েছে। যদি আপনার P90 ফ্রেম রেট বেশি এবং আপনার গড়ের কাছাকাছি হয়, তাহলে গেমটি সেশনের বেশিরভাগ সময় ধরেই ধারাবাহিকভাবে ভালোভাবে চলছে।
  • P99 FPS (১% পার্সেন্টাইলে স্টাটার ইন্ডিকেটর) : এটি নির্দেশ করে যে আপনার ৯৯% ফ্রেম এই স্টাটার ইন্ডিকেটরকে অতিক্রম করেছে, বিশেষত সবচেয়ে ধীরগতির ১% ফ্রেমকে আলাদা করে। মাইক্রো-স্টাটার, অ্যাসেট-লোডিং বিলম্ব, এবং হঠাৎ অ্যাসেট-ভারী রেন্ডারিং স্পাইক যা দৃশ্যমান হিচ সৃষ্টি করে, তা শনাক্ত করার জন্য এই মেট্রিকটি অপরিহার্য।

উদাহরণ

আপনার গড় FPS-কে P90 এবং P99 মেট্রিক্সের সাথে তুলনা করে, আপনি একটি গেমের অন্তর্নিহিত আচরণ নির্ভুলভাবে নির্ণয় করতে পারেন।

দৃশ্যকল্প ১: একটি সর্বোত্তম বক্ররেখা (অপ্টিমাইজড গেম)

  • গড় : ৬০ এফপিএস (১৬.৬ মিলিসেকেন্ড)
  • পি৯০ : ৫৮ এফপিএস (১৭.২ মিলিসেকেন্ড)
  • পি৯৯ : ৫২ এফপিএস (১৯.২ মিলিসেকেন্ড)
  • বিশ্লেষণ : মেট্রিকগুলো একে অপরের খুব কাছাকাছি। গেমটি অবিশ্বাস্যভাবে মসৃণ এবং সামঞ্জস্যপূর্ণ। এতে কোনো মাইক্রো-স্টাটার নেই, এবং এমনকি সবচেয়ে খারাপ ১% ফ্রেমও খালি চোখে প্রায় নজরে পড়ে না।

দৃশ্যকল্প ২: লোড বাধা (সিপিইউ/জিপিইউ সীমাবদ্ধ)

  • গড় : ৪৫ এফপিএস (২২.২ মিলিসেকেন্ড)
  • পি৯০ : ৪০ এফপিএস (২৫.০ মিলিসেকেন্ড)
  • পি৯৯ : ৩৮ এফপিএস (২৬.৩ মিলিসেকেন্ড)
  • বিশ্লেষণ : গড় ফ্রেম রেট কম, কিন্তু তা ধারাবাহিকভাবে কম। গড়ের তুলনায় P99-এর ফ্রেম রেট মারাত্মকভাবে কমে যায় না। এটি ইঙ্গিত দেয় যে, সিস্টেমটি মূলত গ্রাফিক্যাল সেটিংস বা রেজোলিউশনের সীমাবদ্ধতার কারণে হিমশিম খাচ্ছে। গেমটি আটকে আটকে চলবে না, বরং ধীরগতির মনে হবে। গ্রাফিক্স সেটিংস কমালে সাধারণত এই মেট্রিকগুলো সমানভাবে বেড়ে যায়।

দৃশ্যকল্প ৩: একটি অস্থিতিশীল ৬০ এফপিএস (শেডার কম্পাইলেশন / অ্যাসেট স্ট্রিমিং-এ স্টাটার)

  • গড় : ৬০ এফপিএস (১৬.৬ মিলিসেকেন্ড)
  • পি৯০ : ৪৫ এফপিএস (২২.২ মিলিসেকেন্ড)
  • পি৯৯ : ১৫ এফপিএস (৬৬.৬ মিলিসেকেন্ড)
  • বিশ্লেষণ : এটি সবচেয়ে খারাপ পরিস্থিতি। যদিও গড় ফ্রেম রেট চমৎকার দেখাচ্ছে, P99 একটি গুরুতর সমস্যা প্রকাশ করছে। ৬৬.৬ মিলিসেকেন্ডে P99-এর অর্থ হলো, গেমটি একবারে একাধিক ফ্রেমে পুরোপুরি থেমে যাচ্ছে। এটি গুরুতর আউটলায়ারের দিকে ইঙ্গিত করে—যা সাধারণত সিপিইউ-এর সীমাবদ্ধতা, অ্যাসেট স্ট্রিমিং-এ বিলম্ব (উদাহরণস্বরূপ, ধীরগতির র‍্যাম বা স্টোরেজ), অথবা শেডার কম্পাইলেশনের কারণে সৃষ্ট বাধার জন্য হয়ে থাকে।

পরিমাপ

গড় FPS, P90, এবং P99 FPS কার্যকরভাবে পরিমাপ করার জন্য, আপনি নিম্নলিখিত দুটি পদ্ধতি ব্যবহার করতে পারেন। প্রথম পদ্ধতিটি হলো অ্যান্ড্রয়েড পারফরম্যান্স অ্যানালাইজার (APA) , যা একটি পারফরম্যান্স প্রোফাইলিং টুল, ব্যবহার করে সিস্টেম ট্রেস বিশ্লেষণ করা। দ্বিতীয় পদ্ধতিটি হলো বিদ্যমান adb dumpsys SurfaceFlinger --timestats কমান্ডটি ব্যবহার করা।

১. এপিএ ব্যবহার করে পরিমাপ করুন

APA ব্যবহার করে, আপনি SQL কোয়েরির মাধ্যমে একটি সিস্টেম ট্রেস রেকর্ড করতে এবং ফ্রেম ডেটা নির্ভুলভাবে বিশ্লেষণ করতে পারেন। আপনার মেট্রিক্স পরিমাপ করতে এই ধাপগুলো অনুসরণ করুন:

  1. APA দিয়ে ট্রেস ক্যাপচার করুন : আপনার গেমটি চালান এবং যে অংশটি আপনি বিশ্লেষণ করতে চান (উদাহরণস্বরূপ, গেমপ্লের এমন একটি মুহূর্ত যেখানে আপনার ফ্রেম ড্রপের সন্দেহ হচ্ছে), সেই সময়ে একটি সিস্টেম ট্রেস ক্যাপচার করতে APA ব্যবহার করুন। ডিভাইসটি সংযুক্ত হয়ে গেলে এবং ট্রেস রেকর্ডিং সম্পূর্ণ হলে, ট্রেস ডেটা APA ইন্টারফেসে লোড হয়ে যাবে।

    ট্রেস ক্যাপচার স্ক্রিন অথবা লোড করা ট্রেস স্ক্রিন
  2. APA-তে SQL ট্যাবে ক্লিক করুন : ট্রেস অ্যানালাইসিস স্ক্রিনটি খুলে গেলে, ট্রেস প্রসেসর এনভায়রনমেন্ট খোলার জন্য UI-এর উপরের বা পাশের নেভিগেশন এলাকায় থাকা SQL ট্যাবে ক্লিক করুন, যেখানে আপনি সরাসরি ডেটা কোয়েরি করতে পারবেন।

  3. APA SQL ট্যাবে SQL কোয়েরিটি পেস্ট করুন : নিম্নলিখিত SQL কোয়েরিটি কপি করে কোয়েরি ইনপুট ফিল্ডে পেস্ট করুন। এই কোয়েরিটি SurfaceFlinger প্রসেসকে শনাক্ত করে, প্রকৃত ডিসপ্লে আপডেট টাইমস্ট্যাম্পের উপর ভিত্তি করে ফ্রেম ইন্টারভ্যাল গণনা করে এবং গড় FPS, সর্বনিম্ন ১০% (P90) FPS ও সর্বনিম্ন ১% (P99) FPS নির্ণয় করে।

    WITH target_process AS (
    -- 1. Get SurfaceFlinger process ID where frames were identified in debugging step 3
    SELECT upid
    FROM process
    WHERE name = '/system/bin/surfaceflinger'
    ),
    actual_present_times AS (
    -- 2. Calculate the hardware display timestamps when SurfaceFlinger actually updated the screen
    SELECT
        (ts + dur) AS present_ts
    FROM actual_frame_timeline_slice
    WHERE upid IN (SELECT upid FROM target_process)
        AND dur > 0
    ),
    present_intervals AS (
    -- 3. Calculate intervals between physical screen refreshes
    SELECT
        (LEAD(present_ts) OVER (ORDER BY present_ts ASC) - present_ts) / 1000000.0 AS p2p_ms
    FROM actual_present_times
    ),
    valid_intervals AS (
    -- 4. Filter for valid frame intervals
    SELECT p2p_ms
    FROM present_intervals
    WHERE p2p_ms IS NOT NULL AND p2p_ms > 0
    ),
    ordered_frames AS (
    -- 5. Sort in ascending order to calculate percentiles
    SELECT
        p2p_ms,
        ROW_NUMBER() OVER (ORDER BY p2p_ms ASC) AS row_num,
        COUNT(1) OVER () AS total_frames
    FROM valid_intervals
    )
    -- 6. Output final metrics
    SELECT
    (SELECT COUNT(1) FROM valid_intervals) AS total_presented_frames,
    ROUND(1000.0 / NULLIF((SELECT AVG(p2p_ms) FROM valid_intervals), 0), 2) AS average_fps,
    ROUND(1000.0 / NULLIF((SELECT p2p_ms FROM ordered_frames WHERE row_num = CAST(total_frames * 0.90 AS INT)), 0), 2) AS low_10_fps,
    ROUND(1000.0 / NULLIF((SELECT p2p_ms FROM ordered_frames WHERE row_num = CAST(total_frames * 0.99 AS INT)), 0), 2) AS low_1_fps;
    
  4. 'রান কোয়েরি'-তে ক্লিক করুন : কোয়েরি ইনপুট ফিল্ডের কাছে থাকা রান কোয়েরি বোতামে (বা এক্সিকিউট আইকনে) ক্লিক করুন। কোয়েরি এক্সিকিউশন সম্পূর্ণ হলে, পরিমাপকৃত মোট ফ্রেম ( total_presented_frames ), গড় ফ্রেম রেট ( average_fps ), সর্বনিম্ন ১০% FPS ( low_10_fps ), এবং সর্বনিম্ন ১% FPS ( low_1_fps ) রেজাল্টস প্যানেলের একটি টেবিলে প্রদর্শিত হবে।

    স্ক্রিনে সম্পাদিত SQL কোয়েরি এবং এর ফলে প্রাপ্ত চারটি মেট্রিক একটি টেবিলে প্রদর্শিত হচ্ছে।

২. adb (dumpsys SurfaceFlinger) ব্যবহার করে পরিমাপ করুন।

Average FPS, P90, এবং P99 কার্যকরভাবে পরিমাপ করার জন্য, আপনি Android-এর dumpsys surfaceflinger timestats কমান্ডটি ব্যবহার করতে পারেন। এই টুলটি রেন্ডার করা হচ্ছে এমন সমস্ত লেয়ারের জন্য গড় FPS এবং একটি presentToPresent টাইমিং হিস্টোগ্রাম প্রদান করে। একটি ফ্রেমের presentToPresent সময় হলো বর্তমান ফ্রেম এবং আঁকা হচ্ছে এমন পূর্ববর্তী ফ্রেমের মধ্যবর্তী ব্যবধান।

আপনার গেমের জন্য এই মেট্রিকগুলো সংগ্রহ ও গণনা করার ধাপে ধাপে নির্দেশাবলী নিচে দেওয়া হলো:

  1. তথ্য সংগ্রহ শুরু করুন : তথ্য সংগ্রহ শুরু করতে enable এবং clear ফ্ল্যাগ সহ নিম্নলিখিত কমান্ডটি চালান:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. তথ্য ডাম্প করুন : গেমটি যথেষ্ট সময় ধরে খেলার পর, তথ্য আউটপুট করার জন্য ডাম্প ফ্ল্যাগ সহ কমান্ডটি আবার চালান:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    
  3. লেয়ার অনুযায়ী ফিল্টার করুন : ডাম্প করা তথ্য SurfaceFlinger দ্বারা রেন্ডার করা সমস্ত লেয়ারের ডেটা প্রদান করে। আপনাকে layerName উপর ভিত্তি করে ফিল্টার করে আপনার গেমের সাথে সম্পর্কিত বিভাগটি খুঁজে বের করতে হবে (উদাহরণস্বরূপ, layerName = SurfaceView[com.example.yourgame...])।

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    
  4. গড় FPS শনাক্ত করুন : প্রতিটি লেয়ারের গড় FPS স্বয়ংক্রিয়ভাবে গণনা করা হয় এবং ডাম্প আউটপুটে সরাসরি দেখানো হয় (উদাহরণস্বরূপ, averageFPS = 30.179)।

    ...
    averageFPS = 30.179
    ...
    
  5. P90 এবং P99 FPS গণনা করুন : P90 এবং P99 মেট্রিকগুলো খুঁজে বের করার জন্য, আপনাকে ডাম্পে দেওয়া totalFrames এবং presentToPresent টাইমিং হিস্টোগ্রাম বিশ্লেষণ করতে হবে।

    totalFrames = 1000
    ...
    presentToPresent histogram is as below:
    0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0
    13ms=0 14ms=0 15ms=0 16ms=850 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0
    24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=100 34ms=0
    36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=35 54ms=0 58ms=0 62ms=0
    66ms=10 70ms=0 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=5 106ms=0
    110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0
    150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0
    650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
    

    ক. ধারণাগত উদাহরণ (ক্রমবর্ধমান বণ্টন সারণী) ধরা যাক, আপনার গেম সেশনে মোট ১,০০০ ফ্রেম রেকর্ড করা হয়েছে। P90 এবং P99 খুঁজে বের করার জন্য, আপনি সর্বনিম্ন মিলিসেকেন্ড বাকেট থেকে গণনা করে সেই মিলিসেকেন্ড থ্রেশহোল্ডগুলো হিসাব করবেন যেখানে ক্রমবর্ধমান ফ্রেম সংখ্যা যথাক্রমে ৯০০ ফ্রেম (৯০%) এবং ৯৯০ ফ্রেমে (৯৯%) পৌঁছায়।

    ফ্রেম সময় (মিলিসেকেন্ড) ফ্রেম সংখ্যা (হিস্টোগ্রাম) ক্রমবর্ধমান ফ্রেম সংখ্যা পার্সেন্টাইল অবস্থা / গণনা
    ১৬ মিলিসেকেন্ড ৮৫০ ৮৫০ ৮৫.০%
    ৩৩ মিলিসেকেন্ড ১০০ ৯৫০ ৯৫.০%
    ( P90-এর ৯০০ লক্ষ্যমাত্রা অর্জিত হয়েছে! → ১০০০/৩৩ = ৩০.৩ এফপিএস )
    ৫০ মিলিসেকেন্ড ৩৫ ৯৮৫ ৯৮.৫%
    ৬৬ মিলিসেকেন্ড ১০ ৯৯৫ ৯৯.৫%
    ( P99 এর ৯৯০ লক্ষ্যমাত্রা অর্জিত! → ১০০০/৬৬ = ১৫.১ এফপিএস )
    ১০২ মিলিসেকেন্ড ১,০০০ ১০০%

    খ. বাস্তবায়ন যুক্তি (সিউডোকোড) যদি আপনি একটি পাইথন স্ক্রিপ্ট বা লগ পার্সার ব্যবহার করে এই বিশ্লেষণটি স্বয়ংক্রিয় করেন, তাহলে হিস্টোগ্রাম থেকে P90 এবং P99 মানগুলি বের করার যুক্তিটি নিম্নরূপভাবে বাস্তবায়ন করা যেতে পারে:

    # Define target thresholds based on total frame count
    p90_target = totalFrames * 0.90
    p99_target = totalFrames * 0.99
    
    cumulative_frames = 0
    p90_fps = None
    p99_fps = None
    
    # Iterate through the parsed SurfaceFlinger histogram data (sorted by millisecond)
    for ms_bucket, frame_count in present_to_present_histogram:
        cumulative_frames += frame_count
    
        # Capture P90 when cumulative frames cross the 90% threshold
        if p90_fps is None and cumulative_frames >= p90_target:
            p90_fps = 1000 / ms_bucket
    
        # Capture P99 when cumulative frames cross the 99% threshold
        if p99_fps is None and cumulative_frames >= p99_target:
            p99_fps = 1000 / ms_bucket
            break # Optimization: stop iterating once both targets are found
    
  6. ক্যাপচারিং বন্ধ করুন : সমস্ত প্রয়োজনীয় তথ্য সংগ্রহ করার পরে, disable ফ্ল্যাগ ব্যবহার করে টাইমস্ট্যাটস নিষ্ক্রিয় করুন:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

ধীরগতির সেশন

স্লো সেশন বাস্তব জগতের ব্যাপক পারফরম্যান্স সমস্যাগুলো চিহ্নিত করে। একটি সেশনকে "স্লো" বলা হয় যদি ২৫%-এর বেশি ফ্রেম একটি নির্দিষ্ট থ্রেশহোল্ডের (যেমন, ২০ FPS) নিচে নেমে যায়। যদিও এটি বিল্ডের গুরুতর সমস্যা খুঁজে বের করার জন্য কার্যকর, তবে শুধুমাত্র এই মেট্রিকটি একটি উচ্চ-মানের এবং টেকসই অভিজ্ঞতার নিশ্চয়তা দিতে পারে না। একটি গেম হয়তো স্লো সেশন থ্রেশহোল্ড এড়িয়ে যেতে পারে, কিন্তু তারপরেও মাইক্রো-স্টাটারিং-এর শিকার হতে পারে, যা একটি মসৃণ ৬০ FPS অভিজ্ঞতাকে ব্যাহত করে।

যদিও উভয়ই ফ্রেম টাইম থেকে উদ্ভূত, 'স্লো সেশন' এবং 'ফ্রেম রেট' ভিন্ন ভিন্ন ভূমিকা পালন করে। অ্যাভারেজ, P90, এবং P99 FPS মেট্রিকগুলো পারফরম্যান্সের গুণমান এবং স্থায়িত্ব পরিমাপ করে এবং এমন আকস্মিক পতন ও অসামঞ্জস্যপূর্ণ গতি শনাক্ত করে, যা স্লো সেশন মেট্রিকের চোখ এড়িয়ে যেতে পারে।

উপসংহার

সফল পারফরম্যান্স অপ্টিমাইজেশনের জন্য একটি সমন্বিত কৌশল প্রয়োজন। ডেভেলপারদের উচিত গুরুতর পারফরম্যান্স অবনতি শনাক্ত করার জন্য ‘স্লো সেশনস’-কে প্রাথমিক রাডার হিসেবে ব্যবহার করা এবং তারপর অন্তর্নিহিত কারণগুলো নির্ণয় করতে ও গেমপ্লের প্রকৃত মসৃণতা যাচাই করতে গড় FPS, P90 এবং P99 পরীক্ষা করা। এই মেট্রিকগুলো সমন্বিত করার মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে আপনার অ্যাপ্লিকেশনটি ধারাবাহিকভাবে একটি টেকসই এবং অসাধারণ ব্যবহারকারীর অভিজ্ঞতা প্রদান করছে।

অতিরিক্ত সম্পদ

উন্নত প্রোফাইলিং কৌশল, ফ্রেম পেসিং এপিআই (Frame Pacing API) প্রয়োগ এবং ইঞ্জিন-নির্দিষ্ট অপ্টিমাইজেশন কৌশল সম্পর্কে আরও জানতে, অফিসিয়াল অ্যান্ড্রয়েড ডেভেলপার ডকুমেন্টেশন দেখুন:

  • অ্যান্ড্রয়েড ভাইটালস: স্লো সেশন : বুঝুন কীভাবে গুগল প্লে দীর্ঘ সময় ধরে চলা ধীর রেন্ডারিং পরিমাপ ও রিপোর্ট করে, যা সরাসরি ব্যবহারকারীর অভিজ্ঞতার উপর প্রভাব ফেলে। একটি "স্লো সেশন" হলো এমন একটি ইউজার সেশন যেখানে ২৫%-এর বেশি ফ্রেম ধীরগতিসম্পন্ন (উদাহরণস্বরূপ, ৫০ মিলিসেকেন্ডের বেশি সময় নেওয়া, যা ২০ FPS-এর সমতুল্য)।
  • অ্যান্ড্রয়েড ডেভেলপারগণ: গেমের পারফরম্যান্স অপ্টিমাইজ করুন : অ্যান্ড্রয়েড গেম অপ্টিমাইজেশনের মূল কেন্দ্রটি ঘুরে দেখুন। এই বিস্তারিত গাইডটিতে সেরা অনুশীলন এবং প্রোফাইলিং টুল (যেমন APA এবং Perfetto ) সম্পর্কে আলোচনা করা হয়েছে, যা আপনাকে আপনার গেমের সামগ্রিক পারফরম্যান্স সর্বোচ্চ পর্যায়ে নিয়ে যেতে সাহায্য করবে।