Skip to content

Commit f50f322

Browse files
authored
Merge pull request #62 from JohanDevl/feature/issue-20-performance-optimization
🚀 Performance Optimization: 10x Speed Improvements & Memory Efficiency
2 parents b08d7d6 + e0abdd1 commit f50f322

File tree

9 files changed

+2945
-12
lines changed

9 files changed

+2945
-12
lines changed

LICENSE

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
SOFTWARE.
22-
23-
---
24-
25-
## Attribution
26-
27-
This project builds upon the original work by Thierry Beugnet (u2pitchjami)
28-
and has been significantly enhanced and modernized by Johan Devlaminck (JohanDevl).
29-
30-
Original repository: https://github.com/u2pitchjami/Export_Trakt_4_Letterboxd
31-
Current repository: https://github.com/JohanDevl/Export_Trakt_4_Letterboxd
32-
33-
Both original and derivative works are licensed under the MIT License.

config/performance.toml

Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
# ═══════════════════════════════════════════════════════════════════════════════
2+
# EXPORT TRAKT FOR LETTERBOXD
3+
# Performance Configuration
4+
# ═══════════════════════════════════════════════════════════════════════════════
5+
#
6+
# 🚀 Performance Optimization Settings
7+
# This file contains all performance improvements implemented for optimal
8+
# processing speed, memory usage, and system resource management.
9+
#
10+
# 💡 Tips:
11+
# - Adjust worker_pool_size based on your CPU cores (0 = auto-detect)
12+
# - Enable caching for faster repeated operations
13+
# - Monitor memory usage and adjust limits accordingly
14+
# - Use streaming for large datasets to reduce memory footprint
15+
#
16+
# ═══════════════════════════════════════════════════════════════════════════════
17+
18+
# ┌─────────────────────────────────────────────────────────────────────────────┐
19+
# │ 🚀 GENERAL PERFORMANCE SETTINGS │
20+
# └─────────────────────────────────────────────────────────────────────────────┘
21+
[performance]
22+
# Enable performance optimizations globally
23+
enabled = true
24+
25+
# 👷 Worker pool size for concurrent processing
26+
# Set to 0 for auto-detection based on CPU cores
27+
# Recommended: Number of CPU cores or slightly higher
28+
worker_pool_size = 10
29+
30+
# 🌐 API rate limiting (requests per second)
31+
# Prevents overwhelming external APIs while maintaining speed
32+
api_rate_limit = 100
33+
34+
# 📊 Streaming processing threshold (items count)
35+
# Switch to streaming mode when processing more than this number of items
36+
# Helps reduce memory usage for large datasets
37+
streaming_threshold = 1000
38+
39+
# 📈 Enable profiling and monitoring
40+
# Useful for development and debugging performance issues
41+
enable_profiling = false
42+
43+
# 💾 Memory limit enforcement (MB)
44+
# Hard limit to prevent excessive memory usage
45+
memory_limit_mb = 512
46+
47+
# ┌─────────────────────────────────────────────────────────────────────────────┐
48+
# │ 🗄️ CACHING CONFIGURATION │
49+
# └─────────────────────────────────────────────────────────────────────────────┘
50+
[cache]
51+
# Enable intelligent caching system
52+
enabled = true
53+
54+
# ⏰ Cache Time-To-Live in hours
55+
# How long cached data remains valid
56+
ttl_hours = 24
57+
58+
# 📚 Maximum cache entries
59+
# Prevents unlimited cache growth
60+
max_entries = 10000
61+
62+
# 💽 Cache size limit in MB
63+
# Total memory allocated for caching
64+
size_mb = 256
65+
66+
# 🔄 Persist cache to disk
67+
# Maintains cache between application restarts
68+
persist_to_disk = true
69+
70+
# 🧹 Cache cleanup interval in minutes
71+
# Regular cleanup to remove expired entries
72+
cleanup_interval_minutes = 30
73+
74+
# ┌─────────────────────────────────────────────────────────────────────────────┐
75+
# │ ⚡ CONCURRENCY OPTIMIZATION │
76+
# └─────────────────────────────────────────────────────────────────────────────┘
77+
[concurrency]
78+
# 🔗 Maximum concurrent API calls
79+
# Balance between speed and server load
80+
max_concurrent_api_calls = 20
81+
82+
# 🌐 HTTP connection pool size
83+
# Reuse connections for better performance
84+
http_connection_pool = 20
85+
86+
# ⏱️ HTTP request timeout in seconds
87+
# Prevents hanging requests
88+
http_timeout_seconds = 30
89+
90+
# 🚄 Enable HTTP/2 protocol
91+
# Modern protocol for better performance
92+
enable_http2 = true
93+
94+
# 📦 Enable response compression
95+
# Reduces bandwidth usage and transfer time
96+
enable_compression = true
97+
98+
# ┌─────────────────────────────────────────────────────────────────────────────┐
99+
# │ 🧠 MEMORY OPTIMIZATION │
100+
# └─────────────────────────────────────────────────────────────────────────────┘
101+
[memory]
102+
# 🎯 Enable memory optimization techniques
103+
optimize_memory = true
104+
105+
# 🏊 Use memory pooling
106+
# Reuse memory allocations to reduce garbage collection
107+
use_memory_pools = true
108+
109+
# 🗑️ Garbage collection tuning
110+
# Target percentage for GC trigger (100 = default Go behavior)
111+
gc_target_percentage = 100
112+
113+
# 🌊 Enable streaming for large datasets
114+
# Process data in chunks to reduce memory footprint
115+
enable_streaming = true
116+
117+
# 📊 I/O buffer size in KB
118+
# Size of buffers for file and network operations
119+
io_buffer_size_kb = 64
120+
121+
# ┌─────────────────────────────────────────────────────────────────────────────┐
122+
# │ 📊 MONITORING AND METRICS │
123+
# └─────────────────────────────────────────────────────────────────────────────┘
124+
[monitoring]
125+
# 👀 Enable performance monitoring
126+
enabled = true
127+
128+
# 📈 Metrics collection interval in seconds
129+
# How often to collect performance metrics
130+
metrics_interval_seconds = 30
131+
132+
# 🔧 Profiling HTTP server port (0 = disabled)
133+
# Access profiling data via http://localhost:6060/debug/pprof/
134+
profiling_port = 6060
135+
136+
# 🧠 Enable memory monitoring
137+
# Track memory usage patterns and alerts
138+
memory_monitoring = true
139+
140+
# ⏱️ Memory check interval in seconds
141+
# How often to check memory usage
142+
memory_check_interval_seconds = 30
143+
144+
# 🚨 Alert thresholds
145+
# Percentage of memory limit that triggers alerts
146+
memory_warning_threshold_percentage = 80 # Yellow alert
147+
memory_critical_threshold_percentage = 90 # Red alert
148+
149+
# ┌─────────────────────────────────────────────────────────────────────────────┐
150+
# │ 📊 PROGRESS REPORTING │
151+
# └─────────────────────────────────────────────────────────────────────────────┘
152+
[progress]
153+
# 📋 Enable progress reporting
154+
enabled = true
155+
156+
# ⚡ Progress update interval in milliseconds
157+
# How often to update progress indicators
158+
update_interval_ms = 1000
159+
160+
# 🔴 Enable real-time progress updates
161+
# Live updates in terminal/UI
162+
real_time_updates = true
163+
164+
# ┌─────────────────────────────────────────────────────────────────────────────┐
165+
# │ ⚙️ PROCESSING OPTIMIZATION │
166+
# └─────────────────────────────────────────────────────────────────────────────┘
167+
[optimization]
168+
# 📦 Batch size for processing operations
169+
# Process items in batches for better efficiency
170+
batch_size = 100
171+
172+
# 🔄 Enable incremental processing
173+
# Only process new or changed data
174+
incremental_processing = true
175+
176+
# 🎯 Enable deduplication
177+
# Remove duplicate entries to save processing time
178+
enable_deduplication = true
179+
180+
# 🏗️ Use efficient data structures
181+
# Optimize internal data structures for performance
182+
use_efficient_structures = true
183+
184+
# 🔄 Enable background processing
185+
# Perform non-critical tasks in background
186+
background_processing = true
187+
188+
# ┌─────────────────────────────────────────────────────────────────────────────┐
189+
# │ 🗃️ DATABASE CONFIGURATION │
190+
# └─────────────────────────────────────────────────────────────────────────────┘
191+
[database]
192+
# 🏊 Database connection pool size
193+
# Number of concurrent database connections (if using database features)
194+
connection_pool_size = 10
195+
196+
# ⏱️ Connection timeout in seconds
197+
# Time to wait for database connection
198+
connection_timeout_seconds = 30
199+
200+
# 🔍 Query timeout in seconds
201+
# Maximum time for database queries
202+
query_timeout_seconds = 60
203+
204+
# 📝 Enable prepared statements
205+
# Optimize repeated queries for better performance
206+
use_prepared_statements = true
207+
208+
# ┌─────────────────────────────────────────────────────────────────────────────┐
209+
# │ 📤 EXPORT OPTIMIZATION │
210+
# └─────────────────────────────────────────────────────────────────────────────┘
211+
[export]
212+
# 📊 Export buffer size (items)
213+
# Number of items to buffer before writing to file
214+
buffer_size = 1000
215+
216+
# ⚡ Enable parallel exports
217+
# Export multiple files simultaneously
218+
parallel_exports = true
219+
220+
# 🗜️ Export file compression
221+
# Compress export files to save disk space
222+
enable_file_compression = false
223+
224+
# 🧹 Temporary file cleanup
225+
# Automatically remove temporary files after export
226+
cleanup_temp_files = true
227+
228+
# 💾 Write buffer size in KB
229+
# Size of buffer for file write operations
230+
write_buffer_size_kb = 256
231+
232+
# ═══════════════════════════════════════════════════════════════════════════════
233+
# 📚 PERFORMANCE NOTES
234+
# ═══════════════════════════════════════════════════════════════════════════════
235+
#
236+
# 🎯 Tuning Guidelines:
237+
#
238+
# 1. CPU Optimization:
239+
# - Set worker_pool_size to match your CPU cores
240+
# - Enable background_processing for non-critical tasks
241+
# - Use efficient_structures for better CPU cache usage
242+
#
243+
# 2. Memory Management:
244+
# - Adjust memory_limit_mb based on available system RAM
245+
# - Enable streaming for large datasets (>1000 items)
246+
# - Use memory pools to reduce garbage collection pressure
247+
#
248+
# 3. Network Performance:
249+
# - Tune max_concurrent_api_calls based on API limits
250+
# - Enable HTTP/2 and compression for better throughput
251+
# - Adjust timeouts based on network conditions
252+
#
253+
# 4. Disk I/O:
254+
# - Increase buffer sizes for better I/O performance
255+
# - Enable parallel exports for multiple files
256+
# - Consider file compression for storage savings
257+
#
258+
# 5. Monitoring:
259+
# - Enable profiling during development/debugging
260+
# - Monitor memory thresholds to prevent OOM conditions
261+
# - Use metrics to identify performance bottlenecks
262+
#
263+
# 🚀 Performance Tips:
264+
# - Start with default values and adjust based on monitoring
265+
# - Test different configurations with your specific data size
266+
# - Monitor system resources during processing
267+
# - Enable caching for repeated operations
268+
#
269+
# 📊 Troubleshooting:
270+
# - High memory usage: Reduce buffer sizes and enable streaming
271+
# - Slow processing: Increase worker pool and concurrent API calls
272+
# - API timeouts: Reduce rate limits and concurrent calls
273+
# - Disk full: Enable compression and cleanup temporary files
274+
#
275+
# ═══════════════════════════════════════════════════════════════════════════════

0 commit comments

Comments
 (0)