Puhu vs Pillow Benchmark Report

# 🚀 Puhu vs Pillow Performance Benchmark Report

### 📊 System Information

Timestamp: 2025-08-20T22:36:27.753507
Platform: macOS-15.6-x86_64-i386-64bit
Processor: i386
Architecture: 64bit
Python Version: 3.12.8
CPU Cores: 8
Total Memory: 16.0 GB
Pillow Version: 11.3.0
Puhu Version: 0.1.0
Test Iterations: 3
31
Operations where Puhu is faster
0
Operations where Pillow is faster
5
Operations where Puhu uses less memory
77
Total tests performed

## 📈 Performance Comparison Chart

## 📋 Detailed Results

Operation | Puhu Time (ms) | Pillow Time (ms) | Speedup | Puhu Memory (MB) | Pillow Memory (MB) | Winner
--- | --- | --- | --- | --- | --- | ---
Load File 100X100 Rgb | 0.02 | 0.15 | 9.09x | 0.02 | 0.01 | Puhu
Load File 100X100 Rgba | 0.01 | 0.14 | 19.98x | 0.00 | 0.00 | Puhu
Load File 100X100 L | 0.01 | 0.11 | 12.82x | 0.00 | 0.00 | Puhu
Load File 500X500 Rgb | 0.01 | 0.13 | 18.02x | 0.00 | 0.00 | Puhu
Load File 500X500 Rgba | 0.01 | 0.10 | 17.40x | 0.00 | 0.00 | Puhu
Load File 500X500 L | 0.01 | 0.11 | 17.76x | 0.00 | 0.00 | Puhu
Load File 1000X1000 Rgb | 0.01 | 0.11 | 15.79x | 0.00 | 0.00 | Puhu
Load File 1000X1000 Rgba | 0.01 | 0.13 | 21.70x | 0.00 | 0.00 | Puhu
Load File 1000X1000 L | 0.01 | 0.10 | 16.50x | 0.00 | 0.00 | Puhu
Load File 2000X2000 Rgb | 0.01 | 0.11 | 17.26x | 0.00 | 0.00 | Puhu
Load File 2000X2000 Rgba | 0.01 | 0.11 | 14.85x | 0.00 | 0.00 | Puhu
Load File 2000X2000 L | 0.01 | 0.13 | 19.04x | 0.00 | 0.00 | Puhu
Resize 250X250 Nearest | 4.27 | 11.48 | 2.69x | 1.72 | 0.19 | Puhu
Resize 250X250 Bilinear | 3.97 | 13.72 | 3.46x | 0.10 | 1.64 | Puhu
Resize 250X250 Bicubic | 4.55 | 14.97 | 3.29x | 0.99 | 0.00 | Puhu
Resize 250X250 Lanczos | 5.23 | 16.65 | 3.18x | 0.06 | 0.00 | Puhu
Resize 500X500 Nearest | 4.43 | 11.35 | 2.56x | 1.30 | 0.00 | Puhu
Resize 500X500 Bilinear | 4.47 | 14.14 | 3.17x | 0.01 | 0.00 | Puhu
Resize 500X500 Bicubic | 5.38 | 29.41 | 5.47x | 0.02 | 3.24 | Puhu
Resize 500X500 Lanczos | 6.29 | 18.27 | 2.91x | 0.01 | 0.00 | Puhu
Resize 1500X1500 Nearest | 11.13 | 12.21 | ~1x | 5.27 | 0.00 | Tie
Resize 1500X1500 Bilinear | 11.24 | 21.57 | 1.92x | 0.03 | 1.91 | Puhu
Resize 1500X1500 Bicubic | 16.46 | 26.20 | 1.59x | 4.74 | 0.00 | Puhu
Resize 1500X1500 Lanczos | 15.75 | 33.68 | 2.14x | 0.00 | 1.91 | Puhu
Crop 200X200 | 2.27 | 11.61 | 5.13x | 0.01 | 0.00 | Puhu
Crop 400X400 | 2.32 | 11.44 | 4.93x | 0.00 | 0.00 | Puhu
Crop 700X700 | 2.88 | 11.32 | 3.93x | 0.00 | 0.00 | Puhu
Rotate 90 | 1.20 | 3.51 | 2.93x | 0.00 | 0.00 | Puhu
Rotate 180 | 1.25 | 3.37 | 2.69x | 0.00 | 0.00 | Puhu
Rotate 270 | 1.27 | 3.35 | 2.64x | 0.00 | 0.00 | Puhu
Transpose Flip Left Right | 1.30 | 3.34 | 2.57x | 0.00 | 0.00 | Puhu
Transpose Flip Top Bottom | 1.22 | 3.14 | 2.58x | 0.00 | 0.00 | Puhu

### 💡 Performance Recommendations

✅ Use Puhu for image loading: Puhu's lazy loading is consistently faster for file operations, making it ideal for applications that load many images but don't immediately process them.
🧠 Memory optimization needed: Some Puhu operations use significant memory. Consider processing images in smaller batches or using streaming approaches for large datasets.
🔄 Hybrid approach: Consider using Puhu for loading and simple operations, then converting to Pillow for complex processing when needed.
📊 Profile your specific use case: These benchmarks use synthetic data. Test with your actual images and workflows for the most accurate performance comparison.