Test name | Executions per second |
---|---|
Inline Function | 591621.6 Ops/sec |
Hooks | 669048.1 Ops/sec |
Without useMemo | 516036.4 Ops/sec |
With useMemo | 630078.1 Ops/sec |
Child without memo | 451535.5 Ops/sec |
Child with memo | 493341.6 Ops/sec |
<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<div id="root"></div>
function ComponentWithInlineFunction() {
const clickMe = () => {};
return React.createElement('button', {
onClick: clickMe
}, 'Click me!');
}
function ComponentWithUseCallback() {
const clickMe = React.useCallback(() => {}, []);
return React.createElement('button', {
onClick: clickMe
}, 'Click me!');
}
function ComponentWithoutUseMemo() {
const obj = {
x: 1,
y: 1
};
return React.createElement('h1', {
data: obj
}, 'ComponentWithoutUseMemo');
}
function ComponentWithUseMemo() {
const obj = React.useMemo(() => ({
x: 1,
y: 1
}), []);
return React.createElement('h1', {
data: obj
}, 'ComponentWithUseMemo');
}
const ChildWithoutMemo = () => {
return React.createElement('div', null, null);
}
const ChildWithMemo = React.memo(ChildWithoutMemo);
function ComponentWithoutMemorizedChild() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
if (count < 10000) {
setCount(c => c + 1);
}
})
return React.createElement(ChildWithoutMemo, null, null);
}
function ComponentWithMemorizedChild() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
if (count < 10000) {
setCount(c => c + 1);
}
})
return React.createElement(ChildWithMemo, null, null);
}
ReactDOM.render(React.createElement(ComponentWithInlineFunction), document.getElementById('root'))
ReactDOM.render(React.createElement(ComponentWithUseCallback), document.getElementById('root'))
ReactDOM.render(React.createElement(ComponentWithoutUseMemo), document.getElementById('root'))
ReactDOM.render(React.createElement(ComponentWithUseMemo), document.getElementById('root'))
ReactDOM.render(React.createElement(ComponentWithoutMemorizedChild), document.getElementById('root'))
ReactDOM.render(React.createElement(ComponentWithMemorizedChild), document.getElementById('root'))