Files
VisionFlowAutomator/OPTIMIZATION_NOTES.md
2025-07-31 12:52:28 +02:00

112 lines
4.6 KiB
Markdown

# VisionFlow Automator - Performance Optimizations
## Overview
This document outlines the performance and memory optimizations implemented to prevent the application from being killed or stalled during scenario execution.
## Key Optimizations Implemented
### 1. Memory Management
- **Template Caching**: Added `TemplateCache` class to cache loaded CV2 templates instead of reloading from disk every loop iteration
- **Screenshot Caching**: Implemented screenshot caching with 50ms duration to reduce memory allocations
- **Resource Cleanup**: Added proper cleanup in `cleanup_resources()` method and `closeEvent()`
- **Garbage Collection**: Strategic `gc.collect()` calls to force memory cleanup at appropriate times
- **Pixmap Memory Management**: Optimized image preview handling to prevent large pixmap memory leaks
### 2. Performance Improvements
- **Optimized Loop Structure**: Redesigned automation loop to be more efficient
- **Step Cooldown System**: Prevents rapid re-execution of the same step (1-second cooldown)
- **Priority Execution**: Only executes one step per loop iteration to prevent blocking
- **Dynamic Sleep**: Adjusts sleep time based on loop performance (0.05-0.2s)
- **Performance Monitoring**: Added loop time tracking and warnings for slow performance
### 3. Threading Improvements
- **Proper Thread Management**: Added timeout for thread joining in `stop_automation()`
- **Background Processing**: Improved worker thread handling with better error recovery
- **Non-blocking Operations**: Reduced blocking operations in the main thread
### 4. UI Optimizations
- **Reduced Logging**: Changed default log level from DEBUG to INFO to reduce I/O overhead
- **Efficient Image Previews**: Optimized image scaling and memory usage in dialogs
- **State Update Throttling**: Reduced frequency of UI state updates
### 5. Resource Monitoring
- **Performance Timer**: Added 10-second monitoring timer to track application health
- **Memory Usage Tracking**: Optional psutil integration for detailed memory monitoring
- **Cache Size Monitoring**: Tracks template cache size and warns when it grows large
### 6. Error Handling
- **Graceful Degradation**: Better error handling in screenshot capture and template matching
- **Resource Recovery**: Automatic cleanup on errors to prevent resource leaks
- **Hotkey Error Handling**: Continues operation even if hotkey setup fails
## Configuration Changes
### PyAutoGUI Optimizations
- Set `pyautogui.PAUSE = 0.01` (reduced from default 0.1s)
- Set `pyautogui.MINIMUM_DURATION = 0` for faster actions
- Kept `pyautogui.FAILSAFE = False` for automation reliability
### Screenshot Optimization
- Added minimum size validation (10x10 pixels)
- Improved tkinter screenshot tool with better UX
- Memory-efficient PIL image handling with proper cleanup
### Template Matching
- LRU cache with automatic cleanup of old entries
- Maximum cache size of 50 templates
- Force reload option for template updates
## Performance Targets
### Memory Usage
- Template cache limited to 50 entries
- Screenshot cache duration: 50ms
- Automatic cleanup every 100 loop iterations
- Garbage collection after major operations
### Timing
- Target loop time: 50-200ms
- Step cooldown: 1 second
- Performance warning threshold: 1 second average loop time
- Monitoring interval: 10 seconds
### Thread Safety
- Worker thread timeout: 2 seconds
- Daemon threads for automatic cleanup
- Proper resource locking where needed
## Usage Recommendations
1. **Monitor Performance**: Check logs for performance warnings
2. **Resource Management**: Regularly restart long-running sessions
3. **Template Optimization**: Use appropriately sized template images
4. **Step Design**: Avoid too many simultaneous image detections
5. **System Resources**: Ensure adequate RAM for screenshot operations
## Future Improvements
1. **Multi-threading**: Consider separate threads for image processing
2. **Image Compression**: Compress cached templates to save memory
3. **Region Optimization**: Use smaller detection regions when possible
4. **GPU Acceleration**: Consider OpenCV GPU operations for template matching
5. **Background Processing**: Process non-critical operations in background
## Troubleshooting
### High Memory Usage
- Check template cache size in logs
- Reduce number of simultaneous steps
- Restart application periodically
### Slow Performance
- Check average loop times in logs
- Reduce image template sizes
- Simplify detection regions
- Consider fewer simultaneous detections
### Application Crashes
- Check log files for error patterns
- Monitor system memory usage
- Verify image file integrity
- Check for corrupted templates