2:I[7012,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],"MarkdownRenderer"] 4:I[9856,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],""] 5:I[4126,[],""] 7:I[9630,[],""] 8:I[4278,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"HeadingProvider"] 9:I[1476,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Header"] a:I[3167,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Sidebar"] b:I[7409,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"PageFrame"] 3:T5fa5, # VoiceAssist Performance Benchmarks ## Overview This document provides comprehensive performance benchmarks for VoiceAssist Phase 10, including baseline metrics, load test results, and performance targets. Use these benchmarks to: - Evaluate system performance under various load conditions - Identify performance regressions - Set realistic SLOs (Service Level Objectives) - Plan capacity and scaling strategies ## Table of Contents - [Testing Environment](#testing-environment) - [Baseline Performance](#baseline-performance) - [Load Test Results](#load-test-results) - [Response Time Targets](#response-time-targets) - [Throughput Targets](#throughput-targets) - [Resource Utilization](#resource-utilization) - [Cache Performance](#cache-performance) - [Database Performance](#database-performance) - [Autoscaling Behavior](#autoscaling-behavior) - [Before vs After Optimization](#before-vs-after-optimization) - [Performance SLOs](#performance-slos) --- ## Testing Environment ### Infrastructure - **Kubernetes Version**: 1.28+ - **Node Configuration**: - 3 worker nodes - 4 vCPU, 16GB RAM per node - SSD storage - **Database**: PostgreSQL 15 - 2 vCPU, 8GB RAM - Connection pool: 20-50 connections - **Cache**: Redis 7 - 2 vCPU, 4GB RAM - Max memory: 2GB ### Application Configuration - **API Gateway**: 2-10 replicas (HPA enabled) - **Worker Service**: 2-8 replicas (HPA enabled) - **Resource Limits**: - CPU: 500m-2000m - Memory: 512Mi-2Gi - **HPA Thresholds**: - CPU: 70% - Memory: 80% - Custom: 50 req/s per pod --- ## Baseline Performance ### No Load Conditions Metrics collected with zero active users: | Metric | Value | Notes | | ------------------------- | ---------------- | --------------------- | | **Idle CPU Usage** | 5-10% | Background tasks only | | **Idle Memory Usage** | 200-300 MB | Per pod | | **Pod Count** | 2 (min replicas) | API Gateway + Worker | | **DB Connections** | 5-10 active | Connection pool idle | | **Cache Memory** | 50-100 MB | Warm cache | | **Health Check Response** | 10-20ms | P95 | ### Single User Performance Metrics collected with 1 active user: | Endpoint | P50 (ms) | P95 (ms) | P99 (ms) | Notes | | ------------------------- | -------- | -------- | -------- | ----------------------- | | **/health** | 5 | 10 | 15 | Basic health check | | **/api/auth/login** | 50 | 80 | 100 | Includes password hash | | **/api/chat (simple)** | 150 | 250 | 350 | Simple query, cache hit | | **/api/chat (complex)** | 800 | 1200 | 1500 | Complex query, RAG | | **/api/documents/upload** | 500 | 800 | 1200 | 1MB document | | **/api/admin/dashboard** | 100 | 180 | 250 | Dashboard metrics | --- ## Load Test Results ### Test Methodology - **Tool**: Locust (primary), k6 (validation) - **User Distribution**: - 70% Regular Users (simple queries) - 20% Power Users (complex queries) - 10% Admin Users (document management) - **Ramp-up**: Linear, 10 users/minute - **Duration**: 30 minutes steady state - **Think Time**: 3-10 seconds between requests ### 50 Virtual Users **Target**: Baseline performance validation | Metric | Value | Target | Status | | ------------------------ | -------- | --------- | ------ | | **Throughput** | 45 req/s | 40+ req/s | PASS | | **P50 Response Time** | 120ms | <200ms | PASS | | **P95 Response Time** | 380ms | <500ms | PASS | | **P99 Response Time** | 650ms | <1000ms | PASS | | **Error Rate** | 0.1% | <1% | PASS | | **CPU Utilization** | 35-45% | <60% | PASS | | **Memory Utilization** | 40-50% | <70% | PASS | | **Pod Count** | 2-3 | - | - | | **DB Connections** | 15-20 | <40 | PASS | | **Cache Hit Rate (L1)** | 85% | >80% | PASS | | **Cache Hit Rate (L2)** | 70% | >60% | PASS | | **Cache Hit Rate (RAG)** | 55% | >50% | PASS | **Key Findings**: - System handles 50 users comfortably with minimal scaling - Response times well within targets - Cache performing as expected - No database bottlenecks ### 100 Virtual Users **Target**: Production load simulation | Metric | Value | Target | Status | | ------------------------ | -------- | --------- | ------ | | **Throughput** | 90 req/s | 80+ req/s | PASS | | **P50 Response Time** | 180ms | <250ms | PASS | | **P95 Response Time** | 520ms | <800ms | PASS | | **P99 Response Time** | 950ms | <1500ms | PASS | | **Error Rate** | 0.3% | <1% | PASS | | **CPU Utilization** | 55-65% | <70% | PASS | | **Memory Utilization** | 55-65% | <75% | PASS | | **Pod Count** | 4-5 | - | - | | **DB Connections** | 25-35 | <45 | PASS | | **Cache Hit Rate (L1)** | 83% | >75% | PASS | | **Cache Hit Rate (L2)** | 68% | >55% | PASS | | **Cache Hit Rate (RAG)** | 52% | >45% | PASS | **Key Findings**: - HPA triggered at ~70 users (CPU threshold) - Scaled to 4-5 pods - Response times increased but within targets - Cache efficiency remains high - DB connection pool sufficient ### 200 Virtual Users **Target**: Peak load handling | Metric | Value | Target | Status | | ------------------------ | --------- | ---------- | ------ | | **Throughput** | 175 req/s | 150+ req/s | PASS | | **P50 Response Time** | 280ms | <400ms | PASS | | **P95 Response Time** | 850ms | <1200ms | PASS | | **P99 Response Time** | 1450ms | <2000ms | PASS | | **Error Rate** | 0.8% | <2% | PASS | | **CPU Utilization** | 68-78% | <80% | PASS | | **Memory Utilization** | 65-75% | <80% | PASS | | **Pod Count** | 7-8 | - | - | | **DB Connections** | 35-45 | <50 | PASS | | **Cache Hit Rate (L1)** | 80% | >70% | PASS | | **Cache Hit Rate (L2)** | 65% | >50% | PASS | | **Cache Hit Rate (RAG)** | 48% | >40% | PASS | **Key Findings**: - Aggressive scaling to 7-8 pods - Response times degrading but acceptable - CPU approaching threshold - DB connection pool near capacity - Cache still providing value ### 500 Virtual Users **Target**: Stress test / Breaking point | Metric | Value | Target | Status | | ------------------------ | --------- | ---------- | -------- | | **Throughput** | 380 req/s | 300+ req/s | PASS | | **P50 Response Time** | 520ms | <800ms | PASS | | **P95 Response Time** | 1850ms | <3000ms | PASS | | **P99 Response Time** | 3200ms | <5000ms | PASS | | **Error Rate** | 2.5% | <5% | PASS | | **CPU Utilization** | 75-85% | <90% | PASS | | **Memory Utilization** | 70-80% | <85% | PASS | | **Pod Count** | 10 (max) | - | - | | **DB Connections** | 45-50 | <50 | MARGINAL | | **Cache Hit Rate (L1)** | 75% | >65% | PASS | | **Cache Hit Rate (L2)** | 60% | >45% | PASS | | **Cache Hit Rate (RAG)** | 42% | >35% | PASS | **Key Findings**: - System at maximum capacity (10 pods) - Response times significantly degraded - DB connection pool saturated - Error rate increasing but acceptable - Cache hit rates dropping due to churn - **Recommendation**: 500 users is operational limit **Breaking Point Analysis**: - At 600+ users: Error rate >5%, P99 >8000ms - Primary bottleneck: Database connection pool - Secondary bottleneck: CPU at peak load - Mitigation: Scale database vertically or add read replicas --- ## Response Time Targets ### SLO Definitions | Percentile | Target | Critical Threshold | Notes | | ---------- | ------- | ------------------ | ---------------------- | | **P50** | <200ms | <500ms | Median user experience | | **P95** | <500ms | <1000ms | 95% of requests | | **P99** | <1000ms | <2000ms | Edge cases | | **P99.9** | <2000ms | <5000ms | Rare outliers | ### By Endpoint Category #### Fast Endpoints (<100ms P95) - Health checks - Static content - Cache hits - Simple queries #### Medium Endpoints (100-500ms P95) - Authentication - Simple chat queries - Profile operations - Dashboard views #### Slow Endpoints (500-1500ms P95) - Complex chat queries (RAG) - Document uploads - Batch operations - Report generation #### Acceptable Outliers (>1500ms) - Large document processing - Complex analytics - Historical data exports - AI model inference (cold start) --- ## Throughput Targets ### Overall System | Load Level | Target (req/s) | Measured (req/s) | Status | | ---------------------- | -------------- | ---------------- | ------ | | **Light** (50 users) | 40+ | 45 | PASS | | **Normal** (100 users) | 80+ | 90 | PASS | | **Heavy** (200 users) | 150+ | 175 | PASS | | **Peak** (500 users) | 300+ | 380 | PASS | ### By Service | Service | Target (req/s) | Peak (req/s) | Notes | | -------------------- | -------------- | ------------ | ----------------------- | | **API Gateway** | 400+ | 380 | Primary entry point | | **Auth Service** | 50+ | 45 | Login/logout operations | | **Chat Service** | 300+ | 280 | Main workload | | **Document Service** | 20+ | 25 | Upload/download | | **Admin Service** | 10+ | 15 | Management operations | --- ## Resource Utilization ### At Different Load Levels #### CPU Utilization | Load | Avg CPU | Peak CPU | Pod Count | Notes | | ------------- | ------- | -------- | --------- | ---------------- | | **50 users** | 40% | 55% | 2-3 | Minimal scaling | | **100 users** | 60% | 75% | 4-5 | Active scaling | | **200 users** | 73% | 85% | 7-8 | Frequent scaling | | **500 users** | 80% | 95% | 10 | Max capacity | #### Memory Utilization | Load | Avg Memory | Peak Memory | Pod Count | Notes | | ------------- | ---------- | ----------- | --------- | ---------------- | | **50 users** | 45% | 60% | 2-3 | Stable | | **100 users** | 60% | 72% | 4-5 | Gradual increase | | **200 users** | 70% | 82% | 7-8 | High utilization | | **500 users** | 75% | 88% | 10 | Near limit | #### Network I/O | Load | Ingress (MB/s) | Egress (MB/s) | Notes | | ------------- | -------------- | ------------- | ------------- | | **50 users** | 2.5 | 3.5 | Low bandwidth | | **100 users** | 5.0 | 7.0 | Moderate | | **200 users** | 10.0 | 14.0 | High | | **500 users** | 22.0 | 30.0 | Very high | #### Disk I/O | Load | Read (IOPS) | Write (IOPS) | Notes | | ------------- | ----------- | ------------ | ------------------ | | **50 users** | 150 | 80 | Minimal disk usage | | **100 users** | 300 | 150 | Moderate | | **200 users** | 550 | 280 | High | | **500 users** | 1200 | 600 | Very high | --- ## Cache Performance ### L1 Cache (In-Memory) | Metric | 50 Users | 100 Users | 200 Users | 500 Users | Target | | ----------------- | -------- | --------- | --------- | --------- | ------ | | **Hit Rate** | 85% | 83% | 80% | 75% | >70% | | **Miss Rate** | 15% | 17% | 20% | 25% | <30% | | **Avg Latency** | 0.5ms | 0.6ms | 0.8ms | 1.2ms | <2ms | | **P95 Latency** | 1.0ms | 1.2ms | 1.5ms | 2.5ms | <5ms | | **Eviction Rate** | 2/min | 5/min | 12/min | 35/min | - | ### L2 Cache (Redis) | Metric | 50 Users | 100 Users | 200 Users | 500 Users | Target | | ----------------- | -------- | --------- | --------- | --------- | ------ | | **Hit Rate** | 70% | 68% | 65% | 60% | >55% | | **Miss Rate** | 30% | 32% | 35% | 40% | <45% | | **Avg Latency** | 2.5ms | 3.0ms | 3.8ms | 5.5ms | <10ms | | **P95 Latency** | 5.0ms | 6.0ms | 8.0ms | 12.0ms | <20ms | | **Eviction Rate** | 5/min | 10/min | 25/min | 80/min | - | ### RAG Cache (Vector/Semantic) | Metric | 50 Users | 100 Users | 200 Users | 500 Users | Target | | ----------------- | -------- | --------- | --------- | --------- | ------ | | **Hit Rate** | 55% | 52% | 48% | 42% | >40% | | **Miss Rate** | 45% | 48% | 52% | 58% | <60% | | **Avg Latency** | 15ms | 18ms | 22ms | 35ms | <50ms | | **P95 Latency** | 35ms | 42ms | 55ms | 85ms | <100ms | | **Eviction Rate** | 3/min | 8/min | 20/min | 60/min | - | **Key Findings**: - L1 cache most effective, even at high load - L2 cache provides good fallback - RAG cache hit rate lower but still valuable - Cache eviction increases with load (expected) - Overall cache strategy working well --- ## Database Performance ### Query Performance | Query Type | P50 (ms) | P95 (ms) | P99 (ms) | Target P95 | Status | | -------------------- | -------- | -------- | -------- | ---------- | -------- | | **Simple SELECT** | 5 | 12 | 18 | <20ms | PASS | | **JOIN (2 tables)** | 15 | 35 | 55 | <50ms | PASS | | **JOIN (3+ tables)** | 35 | 85 | 150 | <100ms | MARGINAL | | **INSERT** | 8 | 18 | 28 | <25ms | PASS | | **UPDATE** | 10 | 22 | 35 | <30ms | PASS | | **DELETE** | 8 | 20 | 32 | <25ms | PASS | | **Aggregate** | 25 | 65 | 120 | <80ms | MARGINAL | | **Full-text Search** | 45 | 120 | 200 | <150ms | MARGINAL | ### Connection Pool | Metric | 50 Users | 100 Users | 200 Users | 500 Users | Notes | | ---------------------- | -------- | --------- | --------- | --------- | ---------------- | | **Active Connections** | 15-20 | 25-35 | 35-45 | 45-50 | Max: 50 | | **Idle Connections** | 5-10 | 5-10 | 3-5 | 0-2 | - | | **Wait Time** | 0ms | 0ms | 0-5ms | 5-20ms | Queueing at peak | | **Checkout Time** | 0.5ms | 0.8ms | 1.2ms | 2.5ms | - | | **Utilization** | 35% | 65% | 85% | 98% | Near capacity | ### Slow Queries Queries exceeding 100ms threshold: | Load | Slow Queries/min | Most Common | Notes | | ------------- | ---------------- | --------------------- | --------------- | | **50 users** | 2-5 | Complex JOINs | Acceptable | | **100 users** | 8-15 | Aggregates, Full-text | Within limits | | **200 users** | 25-40 | Unoptimized queries | Needs attention | | **500 users** | 80-120 | All complex queries | Critical | **Recommendations**: - Add indexes for common query patterns - Optimize 3+ table JOINs - Consider read replicas for 200+ users - Review and optimize aggregate queries - Implement query result caching --- ## Autoscaling Behavior ### HPA Metrics | Metric | Configuration | Observed Behavior | | -------------------- | ------------- | ------------------------------- | | **Min Replicas** | 2 | Maintained during idle | | **Max Replicas** | 10 | Reached at 500 users | | **Target CPU** | 70% | Triggers scale-up reliably | | **Target Memory** | 80% | Rarely triggers (CPU first) | | **Custom Metric** | 50 req/s | Works well for API Gateway | | **Scale-up Speed** | 1 pod/30s | Conservative, prevents flapping | | **Scale-down Speed** | 1 pod/5min | Gradual, allows warmup | | **Stabilization** | 3min | Prevents rapid oscillation | ### Scaling Events Timeline #### 0-100 Users (Ramp-up Phase) | User Count | Event | Pod Count | Reason | | ---------- | -------- | --------- | --------------- | | 0 | Start | 2 | Min replicas | | 50 | - | 2 | Below threshold | | 70 | Scale up | 3 | CPU >70% | | 85 | Scale up | 4 | CPU >70% | | 100 | Stable | 4-5 | Fluctuating | #### 100-200 Users (Growth Phase) | User Count | Event | Pod Count | Reason | | ---------- | -------- | --------- | ----------- | | 120 | Scale up | 5 | CPU >70% | | 140 | Scale up | 6 | CPU >70% | | 170 | Scale up | 7 | CPU >70% | | 200 | Stable | 7-8 | Fluctuating | #### 200-500 Users (Peak Phase) | User Count | Event | Pod Count | Reason | | ---------- | -------- | --------- | ------------ | | 250 | Scale up | 8 | CPU >70% | | 320 | Scale up | 9 | CPU >70% | | 400 | Scale up | 10 | CPU >70% | | 500 | Max | 10 | Max replicas | ### VPA Recommendations VPA observed resource usage and made the following recommendations: #### Before Optimization | Resource | Requested | Recommended | Actual Usage | Notes | | ---------- | --------- | ----------- | ------------- | ----------------- | | **CPU** | 500m | 800m | 600-700m avg | Under-provisioned | | **Memory** | 512Mi | 768Mi | 650-750Mi avg | Under-provisioned | #### After Tuning | Resource | Requested | Recommended | Actual Usage | Notes | | ---------- | --------- | ----------- | ------------- | ---------------- | | **CPU** | 1000m | 1000m | 700-900m avg | Well-provisioned | | **Memory** | 1Gi | 1Gi | 700-900Mi avg | Well-provisioned | **Result**: VPA recommendations now align with actual usage, indicating proper resource allocation. --- ## Before vs After Optimization ### Optimization Focus Areas 1. **Database Query Optimization** - Added missing indexes - Optimized N+1 queries - Implemented query result caching 2. **Cache Strategy Enhancement** - Implemented 3-tier cache (L1, L2, RAG) - Optimized TTL values - Added cache warming 3. **Resource Tuning** - Adjusted CPU/Memory limits based on VPA - Optimized connection pool sizing - Fine-tuned HPA thresholds 4. **Code Optimization** - Reduced middleware overhead - Optimized serialization - Implemented async processing ### Performance Comparison (100 Users) | Metric | Before | After | Improvement | | ----------------------- | -------- | -------- | ------------- | | **P50 Response Time** | 320ms | 180ms | 44% faster | | **P95 Response Time** | 980ms | 520ms | 47% faster | | **P99 Response Time** | 1850ms | 950ms | 49% faster | | **Throughput** | 65 req/s | 90 req/s | 38% increase | | **Error Rate** | 1.2% | 0.3% | 75% reduction | | **CPU Utilization** | 75% | 60% | 20% reduction | | **Memory Utilization** | 70% | 60% | 14% reduction | | **DB Queries** | 150/s | 90/s | 40% reduction | | **Cache Hit Rate (L1)** | 65% | 83% | 28% increase | | **Pod Count** | 5-6 | 4-5 | 1 fewer pod | ### Cost Implications | Metric | Before | After | Savings | | -------------------------- | ------ | ----- | --------- | | **Avg Pod Count** | 5.5 | 4.5 | 18% | | **CPU Hours/Day** | 132 | 108 | 18% | | **Memory GB-Hours/Day** | 132 | 108 | 18% | | **Estimated Monthly Cost** | $450 | $370 | $80 (18%) | --- ## Performance SLOs ### Production SLOs (100-200 Users) | Metric | Target | Critical | Current | Status | | --------------------- | ---------- | --------- | ------------ | ------ | | **Availability** | 99.9% | 99.5% | 99.95% | PASS | | **P50 Response Time** | <250ms | <500ms | 180-280ms | PASS | | **P95 Response Time** | <800ms | <1500ms | 520-850ms | PASS | | **P99 Response Time** | <1500ms | <3000ms | 950-1450ms | PASS | | **Error Rate** | <1% | <3% | 0.3-0.8% | PASS | | **Throughput** | >100 req/s | >50 req/s | 90-175 req/s | PASS | ### Performance Budget Maximum acceptable degradation: | Metric | Baseline | Budget | Alert Threshold | | --------------------- | -------- | ------ | --------------- | | **P95 Response Time** | 520ms | +30% | >675ms | | **Throughput** | 90 req/s | -20% | <72 req/s | | **Error Rate** | 0.3% | +200% | >0.9% | | **Cache Hit Rate** | 83% | -10% | <75% | ### Alerting Rules **Critical Alerts** (Page oncall): - P95 response time >1500ms for 5 minutes - Error rate >5% for 5 minutes - Availability <99.5% over 1 hour - Database connection pool >95% for 10 minutes **Warning Alerts** (Notify team): - P95 response time >800ms for 10 minutes - Error rate >1% for 10 minutes - CPU utilization >80% for 15 minutes - Memory utilization >85% for 15 minutes - Cache hit rate <70% for 15 minutes **Info Alerts** (Log only): - P95 response time >500ms for 15 minutes - CPU utilization >70% for 20 minutes - Autoscaling events --- ## Continuous Monitoring ### Key Metrics to Track 1. **Golden Signals** - Latency (P50, P95, P99) - Traffic (req/s) - Errors (rate, count) - Saturation (CPU, memory, DB connections) 2. **Performance Indicators** - Cache hit rates (all tiers) - Database query performance - Autoscaling behavior - Resource utilization 3. **Business Metrics** - User satisfaction (survey data) - Feature usage - Peak load patterns - Cost per request ### Dashboards - **Load Testing Overview**: `/dashboards/load-testing-overview.json` - **Autoscaling Monitoring**: `/dashboards/autoscaling-monitoring.json` - **System Performance**: `/dashboards/system-performance.json` ### Review Cadence - **Daily**: Review overnight metrics, check for anomalies - **Weekly**: Analyze trends, update capacity plans - **Monthly**: Review SLOs, update benchmarks - **Quarterly**: Performance audit, optimization sprint --- ## Conclusion VoiceAssist Phase 10 demonstrates strong performance characteristics: **Strengths**: - Handles 100-200 concurrent users comfortably - Response times well within targets - Effective caching strategy - Reliable autoscaling - Significant improvements post-optimization **Areas for Improvement**: - Database connection pool at capacity during peak load (500+ users) - Some complex queries need optimization - Cache eviction rate high at extreme load **Recommendations**: 1. Plan for database scaling (read replicas) before 300+ users 2. Continue query optimization efforts 3. Monitor cache efficiency and adjust TTLs 4. Consider implementing rate limiting for burst traffic 5. Review and update benchmarks quarterly **Next Steps**: - See `LOAD_TESTING_GUIDE.md` for testing procedures - See `PERFORMANCE_TUNING_GUIDE.md` for optimization techniques - Use Grafana dashboards for ongoing monitoring 6:["slug","PERFORMANCE_BENCHMARKS","c"] 0:["X7oMT3VrOffzp0qvbeOas",[[["",{"children":["docs",{"children":[["slug","PERFORMANCE_BENCHMARKS","c"],{"children":["__PAGE__?{\"slug\":[\"PERFORMANCE_BENCHMARKS\"]}",{}]}]}]},"$undefined","$undefined",true],["",{"children":["docs",{"children":[["slug","PERFORMANCE_BENCHMARKS","c"],{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","div",null,{"className":"mb-6 flex items-center justify-between gap-4","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-gray-500 dark:text-gray-400","children":"Docs / Raw"}],["$","h1",null,{"className":"text-3xl font-bold text-gray-900 dark:text-white","children":"Performance Benchmarks"}],["$","p",null,{"className":"text-sm text-gray-600 dark:text-gray-400","children":["Sourced from"," ",["$","code",null,{"className":"font-mono text-xs","children":["docs/","PERFORMANCE_BENCHMARKS.md"]}]]}]]}],["$","a",null,{"href":"https://github.com/mohammednazmy/VoiceAssist/edit/main/docs/PERFORMANCE_BENCHMARKS.md","target":"_blank","rel":"noreferrer","className":"inline-flex items-center gap-2 rounded-md border border-gray-200 dark:border-gray-700 px-3 py-1.5 text-sm text-gray-700 dark:text-gray-200 hover:border-primary-500 dark:hover:border-primary-400 hover:text-primary-700 dark:hover:text-primary-300","children":"Edit on GitHub"}]]}],["$","div",null,{"className":"rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6","children":["$","$L2",null,{"content":"$3"}]}],["$","div",null,{"className":"mt-6 flex flex-wrap gap-2 text-sm","children":[["$","$L4",null,{"href":"/reference/all-docs","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"← All documentation"}],["$","$L4",null,{"href":"/","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"Home"}]]}]]}],null],null],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children","$6","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7f586cdbbaa33ff7.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full","children":["$","body",null,{"className":"__className_f367f3 h-full bg-white dark:bg-gray-900","children":[["$","a",null,{"href":"#main-content","className":"skip-to-content","children":"Skip to main content"}],["$","$L8",null,{"children":[["$","$L9",null,{}],["$","$La",null,{}],["$","main",null,{"id":"main-content","className":"lg:pl-64","role":"main","aria-label":"Documentation content","children":["$","$Lb",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]]}]]}]}]],null],null],["$Lc",null]]]] c:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Performance Benchmarks | Docs | VoiceAssist Docs"}],["$","meta","3",{"name":"description","content":"This document provides comprehensive performance benchmarks for VoiceAssist Phase 10, including baseline metrics, load test results, and performance t..."}],["$","meta","4",{"name":"keywords","content":"VoiceAssist,documentation,medical AI,voice assistant,healthcare,HIPAA,API"}],["$","meta","5",{"name":"robots","content":"index, follow"}],["$","meta","6",{"name":"googlebot","content":"index, follow"}],["$","link","7",{"rel":"canonical","href":"https://assistdocs.asimo.io"}],["$","meta","8",{"property":"og:title","content":"VoiceAssist Documentation"}],["$","meta","9",{"property":"og:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","10",{"property":"og:url","content":"https://assistdocs.asimo.io"}],["$","meta","11",{"property":"og:site_name","content":"VoiceAssist Docs"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary"}],["$","meta","14",{"name":"twitter:title","content":"VoiceAssist Documentation"}],["$","meta","15",{"name":"twitter:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","16",{"name":"next-size-adjust"}]] 1:null