This project is a comprehensive performance benchmark of file upload and processing services implemented in three different programming languages: Go, Rust, and Python.
The primary goal is to compare and analyze the performance characteristics of each language implementation for a common file upload and processing task.
-
File Upload Endpoint
- Expose a REST API endpoint for file uploads
- Accept ZIP files containing JSON data
-
File Handling
- Receive uploaded file
- Save file to a temporary directory
- Unzip the uploaded file
- Extract and process JSON files
- Web Framework: Gin
- Performance-oriented implementation
- Concurrent processing
- Structured logging
- Web Framework: Actix Web
- Zero-cost abstractions
- High performance and memory safety
- Efficient JSON processing
- Web Framework: FastAPI
- Async processing
- Type hints and validation
- Modern Python async capabilities
Each implementation will be evaluated on:
- Request Throughput
- Memory Usage
- CPU Utilization
- Latency
- Concurrency Handling
- Consistent test dataset
- Identical hardware/environment
- Multiple test runs
- Metrics collected using:
- Profiling tools
- System monitoring
- Detailed logging
- Docker
- Docker Compose
- Performance monitoring tools
- Prepare test data
- Run each service
- Execute load tests
- Collect and analyze performance data
docker-compose up -d
./run-benchmarks.sh