**What** Improve serialization further on complex entities to reduce bottleneck. **Notes** It might good at some point to integrate these improvements into mikro orm package 📦 **Load test** The test is using autocanon and wrap the serializers call behind http end points. Each product has 2 variants, 3 options and 3 options values. autocanon is configured for 10 connections during 20 second and 1 pipelining. This is repeated for each configuration and each catch size. 🚀 Load Testing Serializers with Autocannon ================================================================================ ==================================================================================================== 🎯 TESTING 10 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57840 📊 Testing with 10 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 33.85 Avg Latency: 319.30ms P90 Latency: 327.00ms Throughput: 31.36 MB/s Errors: 0 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 821.15 Avg Latency: 11.67ms P90 Latency: 12.00ms Throughput: 0.18 MB/s Errors: 0 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 1286.75 Avg Latency: 7.25ms P90 Latency: 7.00ms Throughput: 37.31 MB/s Errors: 0 📈 Load Testing Performance Comparison for 10 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 33.85 319.30 327.00 31.36 0 baseline Current 821.15 11.67 12.00 0.18 0 24.3x Optimized 1286.75 7.25 7.00 37.31 0 38.0x 🎯 Key Insights for 10 products: • Optimized serializer handles 1.6x more requests/sec than Current • Optimized serializer handles 38.0x more requests/sec than MikroOrm • 37.9% lower latency compared to Current serializer 🔴 Server stopped for 10 products test ==================================================================================================== 🎯 TESTING 100 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57878 📊 Testing with 100 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 3.69 Avg Latency: 3241.29ms P90 Latency: 4972.00ms Throughput: 35.04 MB/s Errors: 0 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 87.45 Avg Latency: 117.20ms P90 Latency: 116.00ms Throughput: 0.02 MB/s Errors: 0 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 143.56 Avg Latency: 70.62ms P90 Latency: 72.00ms Throughput: 42.22 MB/s Errors: 0 📈 Load Testing Performance Comparison for 100 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 3.69 3241.29 4972.00 35.04 0 baseline Current 87.45 117.20 116.00 0.02 0 23.7x Optimized 143.56 70.62 72.00 42.22 0 38.9x 🎯 Key Insights for 100 products: • Optimized serializer handles 1.6x more requests/sec than Current • Optimized serializer handles 38.9x more requests/sec than MikroOrm • 39.7% lower latency compared to Current serializer 🔴 Server stopped for 100 products test ==================================================================================================== 🎯 TESTING 1,000 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57930 📊 Testing with 1000 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 0.00 Avg Latency: 0.00ms P90 Latency: 0.00ms Throughput: 0.00 MB/s Errors: 10 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 0.00 Avg Latency: 0.00ms P90 Latency: 0.00ms Throughput: 0.00 MB/s Errors: 20 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 13.79 Avg Latency: 792.94ms P90 Latency: 755.00ms Throughput: 41.47 MB/s Errors: 0 📈 Load Testing Performance Comparison for 1000 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 0.00 0.00 0.00 0.00 10 NaNx Current 0.00 0.00 0.00 0.00 20 NaNx Optimized 13.79 792.94 755.00 41.47 0 Infinityx 🎯 Key Insights for 1000 products: • Optimized serializer handles Infinityx more requests/sec than Current • Optimized serializer handles Infinityx more requests/sec than MikroOrm • -Infinity% lower latency compared to Current serializer 🔴 Server stopped for 1000 products test ====================================================================================================================================================== 📊 COMPREHENSIVE AUTOCANNON LOAD TESTING ANALYSIS ====================================================================================================================================================== 🚀 Autocannon Load Testing Scaling Analysis: -------------------------------------------------------------------------------------------------------------------------------------------- Size RPS (M/O/Op) Avg Latency (M/O/Op) P90 Latency (M/O/Op) Throughput MB/s (M/O/Op) Speedup vs M (O/Op) Speedup vs O (Op) -------------------------------------------------------------------------------------------------------------------------------------------- 10 33.9/821.1/1286.8 319.3/11.7/7.3 327.0/12.0/7.0 31.4/0.2/37.3 24.3x/38.0x 1.6x 100 3.7/87.5/143.6 3241.3/117.2/70.6 4972.0/116.0/72.0 35.0/0.0/42.2 23.7x/38.9x 1.6x 1,000 0.0/0.0/13.8 0.0/0.0/792.9 0.0/0.0/755.0 0.0/0.0/41.5 NaNx/Infinityx Infinityx 🎯 Overall Load Testing Performance Summary: 📈 10 products: • +56.7% more requests/sec vs Current (821.1 → 1286.8) • +3701.3% more requests/sec vs MikroOrm (33.9 → 1286.8) 📈 100 products: • +64.2% more requests/sec vs Current (87.5 → 143.6) • +3790.5% more requests/sec vs MikroOrm (3.7 → 143.6) 📈 1000 products: • +Infinity% more requests/sec vs Current (0.0 → 13.8) • +Infinity% more requests/sec vs MikroOrm (0.0 → 13.8)
1.2 MiB
1.2 MiB