48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
=== Stream Processing: Sliding Window Average ===
|
|
|
|
Computing average over sliding windows of streaming data
|
|
|
|
|
|
Stream size: 10,000, Window size: 100
|
|
Full storage (O(n) space):
|
|
Time: 0.0048s, Memory: 78.1 KB
|
|
Sliding window (O(w) space):
|
|
Time: 0.0015s, Memory: 0.8 KB
|
|
Speedup: 3.13x, Memory reduction: 100.0x
|
|
Checkpoint (O(√n) space):
|
|
Time: 0.0122s, Memory: 78.1 KB
|
|
vs Full: 2.56x time, 1.0x less memory
|
|
Recompute all (O(1) space):
|
|
Time: 0.0040s, Memory: 8.0 bytes
|
|
vs Full: 0.8x slower
|
|
|
|
Stream size: 50,000, Window size: 500
|
|
Full storage (O(n) space):
|
|
Time: 0.0796s, Memory: 390.6 KB
|
|
Sliding window (O(w) space):
|
|
Time: 0.0047s, Memory: 3.9 KB
|
|
Speedup: 16.79x, Memory reduction: 100.0x
|
|
Checkpoint (O(√n) space):
|
|
Time: 0.1482s, Memory: 878.9 KB
|
|
vs Full: 1.86x time, 0.4x less memory
|
|
|
|
Stream size: 100,000, Window size: 1000
|
|
Full storage (O(n) space):
|
|
Time: 0.3306s, Memory: 781.2 KB
|
|
Sliding window (O(w) space):
|
|
Time: 0.0110s, Memory: 7.8 KB
|
|
Speedup: 30.00x, Memory reduction: 100.0x
|
|
Checkpoint (O(√n) space):
|
|
Time: 0.5781s, Memory: 2476.6 KB
|
|
vs Full: 1.75x time, 0.3x less memory
|
|
|
|
=== Analysis ===
|
|
Key observations:
|
|
1. Sliding window (O(w) space) is FASTER than full storage!
|
|
- Better cache locality
|
|
- No need to maintain huge arrays
|
|
2. This is a case where space reduction improves performance
|
|
3. Real streaming systems use exactly this approach
|
|
|
|
This demonstrates that space-time tradeoffs can be beneficial,
|
|
not just theoretical curiosities! |