-
Notifications
You must be signed in to change notification settings - Fork 65
React components profiler #59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
f961234
5212b22
381b3e5
395a6f9
9b7c674
2c1b4c3
f22023b
1a5f99b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,7 +4,7 @@ title: <Profiler> | |
|
|
||
| <Intro> | ||
|
|
||
| `<Profiler>` lets you measure rendering performance of a React tree programmatically. | ||
| `<Profiler>` আপনাকে একটা React ট্রিয়ের রেন্ডারিং পারফরম্যান্স প্রোগ্রামের সাহায্যে পরিমাপ করার সুযোগ দেয়। | ||
|
|
||
| ```js | ||
| <Profiler id="App" onRender={onRender}> | ||
|
|
@@ -18,11 +18,11 @@ title: <Profiler> | |
|
|
||
| --- | ||
|
|
||
| ## Reference {/*reference*/} | ||
| ## রেফারেন্স {/*reference*/} | ||
|
|
||
| ### `<Profiler>` {/*profiler*/} | ||
|
|
||
| Wrap a component tree in a `<Profiler>` to measure its rendering performance. | ||
| কম্পোনেন্ট ট্রিয়ের রেন্ডারিং পারফরম্যান্স পরিমাপ করার জন্য একে `<Profiler>` এর মধ্যে wrap করুন। | ||
|
|
||
| ```js | ||
| <Profiler id="App" onRender={onRender}> | ||
|
|
@@ -32,41 +32,43 @@ Wrap a component tree in a `<Profiler>` to measure its rendering performance. | |
|
|
||
| #### Props {/*props*/} | ||
|
|
||
| * `id`: A string identifying the part of the UI you are measuring. | ||
| * `onRender`: An [`onRender` callback](#onrender-callback) that React calls every time components within the profiled tree update. It receives information about what was rendered and how much time it took. | ||
|
|
||
| #### Caveats {/*caveats*/} | ||
| * `id`: একটা স্ট্রিং যেটা আপনি UI এর যে অংশ পরিমাপ করতে চান সেটাকে চিহ্নিত করতে ব্যবহৃত হয়। | ||
| * `onRender`: এটা একটা [`onRender` কলব্যাক](#onrender-callback) যেটাকে প্রতিবার প্রোফাইল হতে থাকা ট্রিয়ের মধ্যকার কম্পোনেন্ট আপডেট হলে React কল করে। কী রেন্ডার হল এবং কেমন সময় লাগল এই তথ্যটা সে পায়। | ||
|
|
||
| * Profiling adds some additional overhead, so **it is disabled in the production build by default.** To opt into production profiling, you need to enable a [special production build with profiling enabled.](https://fb.me/react-profiling) | ||
|
|
||
| #### সতর্কতা {/*caveats*/} | ||
|
|
||
| * প্রোফাইলিং কিছু অতিরক্ত কাজ বাড়ায়, তাই এটা **প্রোডাকশন বিল্ডে স্বাভাবিকভাবে বন্ধ থাকে।** প্রোডাকশন প্রোফাইলিং করতে, আপনাকে [প্রোফাইলিং সক্রিয় আছে এমন একটি বিশেষ প্রোডাকশন বিল্ড](https://fb.me/react-profiling) চালু করতে হবে। | ||
|
||
|
|
||
| --- | ||
|
|
||
| ### `onRender` callback {/*onrender-callback*/} | ||
| ### `onRender` কলব্যাক {/*onrender-callback*/} | ||
|
|
||
| React will call your `onRender` callback with information about what was rendered. | ||
| React `onRender` কে কল করবে যেখানে কী রেন্ডার হয়েছিল সেই তথ্য থাকবে। | ||
|
|
||
| ```js | ||
| function onRender(id, phase, actualDuration, baseDuration, startTime, commitTime) { | ||
| // Aggregate or log render timings... | ||
| } | ||
| ``` | ||
|
|
||
| #### Parameters {/*onrender-parameters*/} | ||
| #### প্যারামিটার {/*onrender-parameters*/} | ||
|
|
||
| * `id`: The string `id` 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`](/reference/react/memo) and [`useMemo`](/reference/react/useMemo)). 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). Compare `actualDuration` 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. | ||
| * `id`: `<Profiler>` ট্রিয়ের স্ট্রিং `id` প্রপ যা মাত্র কমিট করেছে। এটা আপনাকে জানায় যে ট্রিয়ের কোন অংশ কমিট করেছে যদি আপনি একাধিক প্রোফাইলার ব্যবহার করে থাকেন। | ||
| * `phase`: `"mount"`, `"update"` অথবা `"nested-update"`। এটা আপনাকে জানায় যে ট্রি কি এই প্রথম মাউন্ট হল নাকি prop, state বা hook এর পরিবর্তনের কারণে পরিবর্তিত হয়েছে। | ||
| * `actualDuration`: বর্তমান আপডেটে `<Profiler>` এবং এর উত্তরসূরিদের রেন্ডার করতে যত মিলিসেকেন্ড খরচ হয়েছে সেই সংখ্যাটা। এটা নির্দেশ করে সাবট্রি মেমোইজেশন কতটা ভালভাবে ব্যবহার করতে পারছে (উদাহরণস্বরূপঃ [`memo`](/reference/react/memo) এবং [`useMemo`](/reference/react/useMemo))। সব ঠিকঠাক থাকলে এই মানটা প্রথম মাউন্টের পর থেকে উল্লেখজনকভাবে কমে যাবার কথা কারণ, উত্তরসূরিদের অনেকেরই পুনরায় রেন্ডার তখনই হবে যখন তাদের কোন prop এর পরিবর্তন হয়। | ||
| * `baseDuration`: এই সংখ্যাটা বোঝায় যে কোন অপটিমাইজেশন ছাড়া পুরো `<Profiler>` সাবট্রি আবার রেন্ডার করার জন্য আনুমানিক কত মিলিসেকেন্ড লাগবে। সর্বশেষ রেন্ডারের জন্য ট্রিয়ের প্রতিটি কম্পোনেন্টে যে সময় লেগেছিল সেটা থেকে এই সংখ্যাটা হিসেব করা হয়। এই মানটা নির্দেশ করে রেন্ডারিং এর জন্য সবচেয়ে বেশি কত সময় লাগতে পারে (উদাহরণস্বরূপঃ একদম প্রাথমিক মাউন্ট বা মেমোইজেশন ছাড়া মাউন্টের সময়)। এর সাথে `actualDuration` তুলনা করে আপনি বুঝতে পারবেন মেমোইজেশন কাজ করছে কি না। | ||
| * `startTime`: একটা সাংখ্যিক টাইমস্ট্যাম্প যা নির্দেশ করে কখন React বর্তমান আপডেট শুরু করেছিল। | ||
| * `endTime`: একটা সাংখ্যিক টাইমস্ট্যাম্প যা নির্দেশ করে কখন React বর্তমান আপডেট commit করেছে। এই মানটা একটা কমিটে সব প্রোফাইলের সাথে শেয়ার করা হয়। যা তাদের প্রয়োজনে গ্রুপ হবার সুযোগ দেয়। | ||
|
|
||
| --- | ||
|
|
||
| ## Usage {/*usage*/} | ||
| ## ব্যবহার {/*usage*/} | ||
|
|
||
| ### Measuring rendering performance programmatically {/*measuring-rendering-performance-programmatically*/} | ||
| ### প্রোগামেটিকালি রেন্ডারিং পারফরম্যান্সের পরিমাপ {/*measuring-rendering-performance-programmatically*/} | ||
|
|
||
| Wrap the `<Profiler>` component around a React tree to measure its rendering performance. | ||
| একটা React ট্রিয়ের রেন্ডারিং পারফরম্যান্স পরিমাপ করার জন্য একে `<Profiler>` কম্পোনেন্ট দিয়ে wrap করে ফেলুন। | ||
|
|
||
| ```js {2,4} | ||
| <App> | ||
|
|
@@ -77,7 +79,7 @@ Wrap the `<Profiler>` component around a React tree to measure its rendering per | |
| </App> | ||
| ``` | ||
|
|
||
| It requires two props: an `id` (string) and an `onRender` callback (function) which React calls any time a component within the tree "commits" an update. | ||
| এর দুটি প্রপ প্রয়োজন হয়ঃ একটা `id` (স্ট্রিং) এবং একটি `onRender` কলব্যাক (ফাংশন) which React calls any time a component within the tree "commits" an update. | ||
|
|
||
| <Pitfall> | ||
|
|
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. এখানে বাদ গেছে onubad. |
||
|
|
@@ -87,15 +89,15 @@ Profiling adds some additional overhead, so **it is disabled in the production b | |
|
|
||
| <Note> | ||
|
|
||
| `<Profiler>` lets you gather measurements programmatically. If you're looking for an interactive profiler, try the Profiler tab in [React Developer Tools](/learn/react-developer-tools). It exposes similar functionality as a browser extension. | ||
| `<Profiler>` আপনাকে প্রোগ্রামেটিকালি পরিমাপ জানতে সাহায্য করে। আপনি যদি interactive প্রোফাইলার চান, তাহলে [React ডেভেলপার টুলসের](/learn/react-developer-tools) Profiler ট্যাবটা ব্যবহার করে দেখতে পারেন। এটা ব্রাউজার এক্সটেনশন হিসেবে কাছাকাছি রকম কাজ করে। | ||
|
|
||
| </Note> | ||
|
|
||
| --- | ||
|
|
||
| ### Measuring different parts of the application {/*measuring-different-parts-of-the-application*/} | ||
| ### অ্যাপ্লিকেশনের বিভিন্ন অংশের পরিমাপ {/*measuring-different-parts-of-the-application*/} | ||
|
|
||
| You can use multiple `<Profiler>` components to measure different parts of your application: | ||
| অ্যাপ্লিকেশনের বিভিন্ন অংশের পরিমাপের জন্য আপনি একাধিক `<Profiler>` ব্যবহার করতে পারেনঃ | ||
|
|
||
| ```js {5,7} | ||
| <App> | ||
|
|
@@ -108,7 +110,7 @@ You can use multiple `<Profiler>` components to measure different parts of your | |
| </App> | ||
| ``` | ||
|
|
||
| You can also nest `<Profiler>` components: | ||
| আপনি `<Profiler>` কম্পোনেন্টগুলো নেস্টও করতে পারেনঃ | ||
|
|
||
| ```js {5,7,9,12} | ||
| <App> | ||
|
|
@@ -126,7 +128,7 @@ You can also nest `<Profiler>` components: | |
| </App> | ||
| ``` | ||
|
|
||
| Although `<Profiler>` is a lightweight component, it should be used only when necessary. Each use adds some CPU and memory overhead to an application. | ||
| যদি `<Profiler>` একটা হালকা কম্পোনেন্ট, এটা শুধুমাত্র তখনি ব্যবহার করা উচিত যখন প্রয়োজন পড়ছে। প্রতি বার ব্যবহারে অ্যাপের CPU এবং Memory এর উপরে অতিরিক্ত কিছু চাপ পড়ে। | ||
|
||
|
|
||
| --- | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
লাইনের অমিল আছে।