Performance Guide¶
Gira is designed to handle large projects efficiently. This guide covers performance characteristics and optimization features.
Performance Benchmarks¶
Based on comprehensive testing with various project sizes (real benchmark data):
Gira Operations Performance¶
Operation | 500 tickets | 1000 tickets | 2000 tickets | Notes |
---|---|---|---|---|
Board display | 0.105s | 0.209s | 0.404s | Loads and displays kanban board |
Board display (fast) | 0.080s | 0.111s | 0.183s | Optimized board with --fast flag |
List all tickets | 0.181s | 0.354s | 0.716s | Lists all tickets |
List high priority tickets | 0.041s | 0.068s | 0.139s | Filter by priority |
List blocked tickets | 0.024s | 0.045s | 0.085s | Show dependency-blocked tickets |
Search for 'test' | 0.164s | 0.319s | 0.639s | Full-text fuzzy search |
Search for specific ticket | 0.006s | 0.008s | 0.012s | Direct ticket search |
Show single ticket | 0.006s | 0.005s | 0.005s | Display one ticket details |
List archived tickets | 0.040s | 0.042s | 0.053s | Archive operations |
Move ticket status | 0.005s | 0.004s | 0.004s | Change ticket status |
Create new ticket | 0.018s | 0.017s | 0.017s | Create ticket operation |
List epics | 0.004s | 0.004s | 0.004s | Epic listing |
Sync (conflict detection) | 0.005s | 0.004s | 0.005s | Conflict resolution |
Git Operations Performance¶
Git Operation | 500 tickets | 1000 tickets | 2000 tickets | Notes |
---|---|---|---|---|
Git status | 0.013s | 0.015s | 0.016s | Check working tree status |
Git add single file | 0.012s | 0.012s | 0.013s | Stage single file |
Git add many files | 0.029s | 0.029s | 0.031s | Stage multiple files |
Git commit | 0.018s | 0.019s | 0.021s | Create commit |
Git commit many files | 0.025s | 0.023s | 0.022s | Commit multiple changes |
Git log (recent) | 0.010s | 0.012s | 0.011s | Show recent commits |
Git diff (working tree) | 0.013s | 0.014s | 0.014s | Show working tree diff |
Scaling Characteristics¶
Analysis from real benchmarks:
- Board display: Sub-linear scaling (3.8x time for 4.0x tickets)
- List all tickets: Linear scaling (4.0x time for 4.0x tickets)
- Search operations: Sub-linear scaling (3.9x time for 4.0x tickets)
- Move ticket: Constant time (independent of project size)
- Git operations: Nearly constant time (minimal impact from project size)
Built-in Optimizations¶
1. In-Memory Caching¶
Gira uses smart caching to avoid redundant file system operations:
- Ticket lists cached for 60 seconds
- Board data cached for 30 seconds
- Cache automatically invalidated on ticket modifications
2. Parallel File Loading¶
For board display with many tickets:
The --fast
flag enables:
- Parallel file loading with thread pool
- Batch processing of tickets
- Optimized rendering
3. Efficient Data Structures¶
- Tickets stored as individual JSON files for fast access
- Directory-based organization by status
- No database overhead
Performance Tips¶
For Large Projects (1000+ tickets)¶
-
Use focused queries:
-
Archive completed work:
-
Use the fast board display:
Directory Structure¶
Keep your .gira/
directory organized:
.gira/
├── board/
│ ├── todo/ # Active tickets only
│ ├── in_progress/ # Current work
│ ├── review/ # Under review
│ └── done/ # Recently completed
└── archive/ # Old tickets
└── 2025-07/ # Organized by month
Performance Analysis & Insights¶
Key Findings¶
-
Excellent Performance at Scale: Gira handles 2000+ tickets efficiently with sub-second response times for most operations.
-
Sub-linear Scaling: Most operations scale better than linearly, meaning doubling tickets doesn't double execution time.
-
Git Independence: Git operations remain fast regardless of project size, making Gira suitable for large distributed teams.
-
Fast Operations: Critical operations like ticket moves, shows, and epic listing are consistently under 0.02s.
Performance Recommendations by Project Size¶
Small Projects (< 500 tickets)¶
- Expected Performance: All operations under 0.2s
- Recommended Setup: Default configuration
- Key Benefits: Instant response times, no optimization needed
Medium Projects (500-1000 tickets)¶
- Expected Performance: Board display ~0.2s, list operations ~0.35s
- Recommended Optimizations:
- Use
gira board --fast
for improved board performance - Filter ticket lists by status/priority when possible
- Key Benefits: Still excellent performance with minor optimizations
Large Projects (1000-2000 tickets)¶
- Expected Performance: Board display ~0.4s, search ~0.6s
- Recommended Optimizations:
- Always use
gira board --fast
for board display - Use filtered lists instead of
gira ticket list
- Archive completed tickets quarterly
- Key Benefits: Consistent performance with proper usage patterns
Enterprise Projects (2000+ tickets)¶
- Expected Performance: Board display ~0.5s+, full search ~0.8s+
- Required Optimizations:
- Implement regular archiving strategy (monthly/quarterly)
- Use focused queries exclusively
- Consider project subdivision for very large teams
- Key Benefits: Maintains usability at enterprise scale
Git Performance Insights¶
Excellent Git Integration: Git operations show minimal performance impact: - Git status: ~0.015s regardless of project size - Commit operations: ~0.02s for typical changes - Add operations: ~0.03s for bulk changes
Recommendation: Gira's Git integration is highly optimized and suitable for frequent commits.
Testing Performance¶
Run the comprehensive performance test suite:
# Quick benchmark (3 scales, 1 run each)
python scripts/benchmark.py --quick
# Full benchmark with multiple scales
python scripts/benchmark.py --scales 500 1000 2000 5000
# Export results for analysis
python scripts/benchmark.py --export-json results.json --report performance.md
# Test specific scale with averaging
python scripts/benchmark.py --scales 1000 --runs 5
Legacy Performance Test¶
For single-scale testing:
# Test with 500 tickets
python tests/performance/test_performance.py --tickets 500
# Test with 1000 tickets
python tests/performance/test_performance.py --tickets 1000
# Keep test data for manual testing
python tests/performance/test_performance.py --tickets 1000 --keep
Future Optimizations¶
While current performance is excellent, potential future enhancements include:
- Search indexing: Pre-built search index for instant results
- Lazy loading: Load ticket details only when needed
- Background updates: Refresh cache in background
- Compression: Compress archived ticket data
Conclusion¶
Gira maintains excellent performance even with thousands of tickets through:
- Smart caching strategies
- Efficient file organization
- Parallel processing capabilities
- Minimal dependencies
For most teams (under 1000 active tickets), the default configuration provides instant response times for all operations.