Blog>
Snippets

Performance Benchmarking pre-v5.0.0 and v5.0.0 Actions

Present comparative benchmark tests measuring performance differences before and after migrating to string-typed actions in Redux v5.0.0.
// Benchmark using hypothetical pre-v5.0.0 Redux actions
const preV500Actions = Array(1000000).fill().map((_, index) => ({
  type: Symbol(`ACTION_${index}`),
  payload: { value: index }
}));

let start = performance.now();
preV500Actions.forEach(action => {
  // Simulate reducer handling
  if (typeof action.type === 'symbol') {
    // Perform reducer logic
  }
});
let end = performance.now();
console.log('Pre v5.0.0 benchmark took:', end - start, 'milliseconds');
This code block sets up a benchmark test for Redux prior to v5.0.0, creating a large number of action objects with unique Symbol types and measures the time taken for a simulated reducer to process them.
// Benchmark using Redux v5.0.0 string-typed actions
const v500Actions = Array(1000000).fill().map((_, index) => ({
  type: `ACTION_${index}`,
  payload: { value: index }
}));

start = performance.now();
v500Actions.forEach(action => {
  // Simulate reducer handling
  if (typeof action.type === 'string') {
    // Perform reducer logic
  }
});
end = performance.now();
console.log('v5.0.0 benchmark took:', end - start, 'milliseconds');
This code segment sets up a benchmark test for Redux v5.0.0, generating a significant number of action objects with string types and measures the duration a hypothetical reducer takes to process them, highlighting the performance differences.