<Profiler>
<Profiler>
আপনাকে একটা React ট্রিয়ের রেন্ডারিং পারফরম্যান্স প্রোগ্রামের সাহায্যে পরিমাপ করার সুযোগ দেয়।
<Profiler id="App" onRender={onRender}>
<App />
</Profiler>
রেফারেন্স
<Profiler>
কম্পোনেন্ট ট্রিয়ের রেন্ডারিং পারফরম্যান্স পরিমাপ করার জন্য একে <Profiler>
এর মধ্যে wrap করুন।
<Profiler id="App" onRender={onRender}>
<App />
</Profiler>
Props
id
: একটা স্ট্রিং যেটা আপনি UI এর যে অংশ পরিমাপ করতে চান সেটাকে চিহ্নিত করতে ব্যবহৃত হয়।onRender
: এটা একটাonRender
কলব্যাক যেটাকে প্রতিবার প্রোফাইল হতে থাকা ট্রিয়ের মধ্যকার কম্পোনেন্ট আপডেট হলে React কল করে। কী রেন্ডার হল এবং কেমন সময় লাগল এই তথ্যটা সে পায়।
সতর্কতা
- প্রোফাইলিং কিছু অতিরক্ত কাজ বাড়ায়, তাই এটা প্রোডাকশন বিল্ডে স্বাভাবিকভাবে বন্ধ থাকে। প্রোডাকশন প্রোফাইলিং করতে, আপনাকে প্রোফাইলিং সক্রিয় আছে এমন একটি বিশেষ প্রোডাকশন বিল্ড চালু করতে হবে।
onRender
কলব্যাক
React onRender
কে কল করবে যেখানে কী রেন্ডার হয়েছিল সেই তথ্য থাকবে।
function onRender(id, phase, actualDuration, baseDuration, startTime, commitTime) {
// Aggregate or log render timings...
}
প্যারামিটার
id
: The stringid
prop of the<Profiler>
tree that has just committed. This lets you identify which part of the tree was committed if you are using multiple profilers.phase
:"mount"
,"update"
or"nested-update"
. This lets you know whether the tree has just been mounted for the first time or re-rendered due to a change in props, state, or hooks.actualDuration
: The number of milliseconds spent rendering the<Profiler>
and its descendants for the current update. This indicates how well the subtree makes use of memoization (e.g.memo
anduseMemo
). Ideally this value should decrease significantly after the initial mount as many of the descendants will only need to re-render if their specific props change.baseDuration
: The number of milliseconds estimating how much time it would take to re-render the entire<Profiler>
subtree without any optimizations. It is calculated by summing up the most recent render durations of each component in the tree. This value estimates a worst-case cost of rendering (e.g. the initial mount or a tree with no memoization). CompareactualDuration
against it to see if memoization is working.startTime
: A numeric timestamp for when React began rendering the current update.endTime
: A numeric timestamp for when React committed the current update. This value is shared between all profilers in a commit, enabling them to be grouped if desirable.
ব্যবহার
প্রোগামেটিকালি রেন্ডারিং পারফরম্যান্সের পরিমাপ
একটা React ট্রিয়ের রেন্ডারিং পারফরম্যান্স পরিমাপ করার জন্য একে <Profiler>
কম্পোনেন্ট দিয়ে wrap করে ফেলুন।
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<PageContent />
</App>
এর দুটি প্রপ প্রয়োজন হয়ঃ একটা id
(স্ট্রিং) এবং একটি onRender
কলব্যাক (ফাংশন) which React calls any time a component within the tree “commits” an update.
অ্যাপ্লিকেশনের বিভিন্ন অংশের পরিমাপ
অ্যাপ্লিকেশনের বিভিন্ন অংশের পরিমাপের জন্য আপনি একাধিক <Profiler>
ব্যবহার করতে পারেনঃ
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<Profiler id="Content" onRender={onRender}>
<Content />
</Profiler>
</App>
আপনি <Profiler>
কম্পোনেন্টগুলো নেস্টও করতে পারেনঃ
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<Profiler id="Content" onRender={onRender}>
<Content>
<Profiler id="Editor" onRender={onRender}>
<Editor />
</Profiler>
<Preview />
</Content>
</Profiler>
</App>
যদি <Profiler>
একটা হালকা কম্পোনেন্ট, এটা শুধুমাত্র তখনি ব্যবহার করা উচিত যখন প্রয়োজন পড়ছে। প্রতি বার ব্যবহারে অ্যাপের CPU এবং Memory এর উপরে অতিরিক্ত কিছু চাপ পড়ে।