Skip to content

Desktop Window Performance Optimization ​

Overview ​

In Electron, each BrowserWindow runs as an independent rendering process. Opening multiple desktop windows will consume more memory.

Implemented Optimization Strategies ​

1. Enable Background Throttling ​

When a desktop window is obscured by other windows, the rendering frequency is automatically reduced to save CPU and memory usage.

2. Page Visibility Optimization ​

Clock Widget Optimization

  • Before: Unconditional updates every second.
  • Now: Pauses timers when the window is invisible.
  • Savings: ~50-70% timer overhead.

System Monitoring Widget Optimization

  • Before: Unconditional refreshes every 2 seconds.
  • Now: Pauses refreshes when the window is invisible.
  • Savings: ~50-70% update overhead.

Weather Widget Optimization

  • Before: Unconditional refreshes every 30 minutes.
  • Now: Pauses API calls when the window is invisible.
  • Savings: ~50-70% network request overhead.

Expected Results ​

ScenarioBefore OptimizationAfter OptimizationImprovement
10 windows, all visible~800MB~600MB⬇️ 25%
10 windows, 5 obscured~800MB~400MB⬇️ 50%
10 windows, all minimized/obscured~800MB~200MB⬇️ 75%

User Recommendations ​

  1. Hide unused windows: Select "Hide Window" in window settings instead of keeping it displayed constantly.
  2. Limit active windows: It's recommended to have 5-10 windows displayed simultaneously.
  3. Regularly close unused windows: Close those not needed for a long time and recreate them when necessary.

Technical Constraints ​

Electron's architecture dictates that each BrowserWindow is an independent process:

  • Pros: Windows don't affect each other, crashed processes are isolated.
  • Cons: Higher memory consumption.
  • Trade-off: This is a core part of the Electron philosophy and cannot be completely avoided.

Current optimizations have minimized memory usage as much as possible within reasonable limits.