From e8f825a00299ed86f3e34821b1e3b5535faa90c4 Mon Sep 17 00:00:00 2001 From: Juan Pedro Moreno Date: Thu, 2 Nov 2017 15:49:58 +0100 Subject: [PATCH] Running Benchmarks on GCP (#15) * Adds sbt-assembly configuration - Assembling metrifier. * Adds the instructions to upload jars to GCS * Final instructions to run benchmarks on GCP * Adds GCP benchmark results * Tweaks docs. Adds a Table of contents --- BENCHMARK_RESULTS.md | 1113 ---------------------------- README.md | 377 ++++++++-- build.sbt | 5 + chart-bar.png | Bin 33402 -> 0 bytes chart-radar.png | Bin 96506 -> 0 bytes charts/chart-bar-gcp.png | Bin 0 -> 36970 bytes charts/chart-bar-local.png | Bin 0 -> 36931 bytes charts/chart-radar-gcp.png | Bin 0 -> 105318 bytes charts/chart-radar-local.png | Bin 0 -> 116396 bytes deploy/tmpl-compute.jinja | 8 +- deploy/tmpl-vm.jinja | 8 +- project/ProjectPlugin.scala | 38 +- project/plugins.sbt | 3 +- results/BENCHMARK_RESULTS_GCP.md | 1112 +++++++++++++++++++++++++++ results/BENCHMARK_RESULTS_LOCAL.md | 1110 +++++++++++++++++++++++++++ version.sbt | 2 +- 16 files changed, 2584 insertions(+), 1192 deletions(-) delete mode 100644 BENCHMARK_RESULTS.md delete mode 100644 chart-bar.png delete mode 100644 chart-radar.png create mode 100644 charts/chart-bar-gcp.png create mode 100644 charts/chart-bar-local.png create mode 100644 charts/chart-radar-gcp.png create mode 100644 charts/chart-radar-local.png create mode 100644 results/BENCHMARK_RESULTS_GCP.md create mode 100644 results/BENCHMARK_RESULTS_LOCAL.md diff --git a/BENCHMARK_RESULTS.md b/BENCHMARK_RESULTS.md deleted file mode 100644 index 19d0343..0000000 --- a/BENCHMARK_RESULTS.md +++ /dev/null @@ -1,1113 +0,0 @@ -# Benchmark Results - -See [README](README.md#running-benchmarks) for reference. - -## Machine Details - -* Model Name: MacBook Pro -* Model Identifier: MacBookPro12,1 -* Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz -* Number of Processors: 1 -* Total Number of Cores: 2 -* L2 Cache (per Core): 256 KB -* L3 Cache: 3 MB -* Memory: 16 GB -* MacOS Sierra version 10.12 - -## jmh - http - -```bash -[info] Running (fork) org.openjdk.jmh.Main -o http-benchmark-results.txt -i 20 -wi 20 -f 2 -t 1 metrifier.benchmark.HttpBenchmark - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.HttpBenchmark.createPerson - -# Run progress: 0.00% complete, ETA 00:06:40 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.105 ops/s -# Warmup Iteration 2: 98.146 ops/s -# Warmup Iteration 3: 150.523 ops/s -# Warmup Iteration 4: 193.127 ops/s -# Warmup Iteration 5: 201.831 ops/s -# Warmup Iteration 6: 229.213 ops/s -# Warmup Iteration 7: 265.690 ops/s -# Warmup Iteration 8: 300.318 ops/s -# Warmup Iteration 9: 325.810 ops/s -# Warmup Iteration 10: 377.405 ops/s -# Warmup Iteration 11: 274.590 ops/s -# Warmup Iteration 12: 453.667 ops/s -# Warmup Iteration 13: 528.892 ops/s -# Warmup Iteration 14: 593.282 ops/s -# Warmup Iteration 15: 594.902 ops/s -# Warmup Iteration 16: 581.960 ops/s -# Warmup Iteration 17: 502.734 ops/s -# Warmup Iteration 18: 630.397 ops/s -# Warmup Iteration 19: 646.573 ops/s -# Warmup Iteration 20: 698.147 ops/s -Iteration 1: 716.770 ops/s -Iteration 2: 640.627 ops/s -Iteration 3: 710.789 ops/s -Iteration 4: 706.288 ops/s -Iteration 5: 621.900 ops/s -Iteration 6: 701.832 ops/s -Iteration 7: 799.806 ops/s -Iteration 8: 699.541 ops/s -Iteration 9: 691.254 ops/s -Iteration 10: 789.789 ops/s -Iteration 11: 791.610 ops/s -Iteration 12: 696.676 ops/s -Iteration 13: 774.205 ops/s -Iteration 14: 854.603 ops/s -Iteration 15: 776.280 ops/s -Iteration 16: 852.916 ops/s -Iteration 17: 927.439 ops/s -Iteration 18: 938.737 ops/s -Iteration 19: 836.584 ops/s -Iteration 20: 958.098 ops/s - -# Run progress: 10.00% complete, ETA 00:08:13 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.119 ops/s -# Warmup Iteration 2: 153.356 ops/s -# Warmup Iteration 3: 231.009 ops/s -# Warmup Iteration 4: 284.125 ops/s -# Warmup Iteration 5: 322.233 ops/s -# Warmup Iteration 6: 376.766 ops/s -# Warmup Iteration 7: 458.376 ops/s -# Warmup Iteration 8: 443.112 ops/s -# Warmup Iteration 9: 464.929 ops/s -# Warmup Iteration 10: 631.966 ops/s -# Warmup Iteration 11: 663.206 ops/s -# Warmup Iteration 12: 618.272 ops/s -# Warmup Iteration 13: 529.411 ops/s -# Warmup Iteration 14: 679.308 ops/s -# Warmup Iteration 15: 734.797 ops/s -# Warmup Iteration 16: 822.528 ops/s -# Warmup Iteration 17: 849.616 ops/s -# Warmup Iteration 18: 785.756 ops/s -# Warmup Iteration 19: 822.618 ops/s -# Warmup Iteration 20: 771.127 ops/s -Iteration 1: 661.743 ops/s -Iteration 2: 763.918 ops/s -Iteration 3: 844.760 ops/s -Iteration 4: 647.496 ops/s -Iteration 5: 688.848 ops/s -Iteration 6: 804.950 ops/s -Iteration 7: 832.085 ops/s -Iteration 8: 888.157 ops/s -Iteration 9: 859.227 ops/s -Iteration 10: 864.113 ops/s -Iteration 11: 869.696 ops/s -Iteration 12: 845.037 ops/s -Iteration 13: 858.420 ops/s -Iteration 14: 1082.050 ops/s -Iteration 15: 1176.946 ops/s -Iteration 16: 1186.448 ops/s -Iteration 17: 1276.276 ops/s -Iteration 18: 1306.230 ops/s -Iteration 19: 1232.384 ops/s -Iteration 20: 1267.566 ops/s - - -Result "metrifier.benchmark.HttpBenchmark.createPerson": - 861.052 ±(99.9%) 106.109 ops/s [Average] - (min, avg, max) = (621.900, 861.052, 1306.230), stdev = 188.609 - CI (99.9%): [754.943, 967.162] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.HttpBenchmark.getPerson - -# Run progress: 20.00% complete, ETA 00:07:14 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.136 ops/s -# Warmup Iteration 2: 166.049 ops/s -# Warmup Iteration 3: 266.763 ops/s -# Warmup Iteration 4: 318.418 ops/s -# Warmup Iteration 5: 347.499 ops/s -# Warmup Iteration 6: 461.348 ops/s -# Warmup Iteration 7: 494.589 ops/s -# Warmup Iteration 8: 606.455 ops/s -# Warmup Iteration 9: 694.390 ops/s -# Warmup Iteration 10: 910.898 ops/s -# Warmup Iteration 11: 876.455 ops/s -# Warmup Iteration 12: 803.516 ops/s -# Warmup Iteration 13: 1015.217 ops/s -# Warmup Iteration 14: 1073.062 ops/s -# Warmup Iteration 15: 1088.485 ops/s -# Warmup Iteration 16: 1116.181 ops/s -# Warmup Iteration 17: 960.667 ops/s -# Warmup Iteration 18: 1082.721 ops/s -# Warmup Iteration 19: 975.980 ops/s -# Warmup Iteration 20: 1081.493 ops/s -Iteration 1: 1153.774 ops/s -Iteration 2: 1158.449 ops/s -Iteration 3: 1263.525 ops/s -Iteration 4: 1244.730 ops/s -Iteration 5: 1440.425 ops/s -Iteration 6: 1465.721 ops/s -Iteration 7: 1483.527 ops/s -Iteration 8: 1596.471 ops/s -Iteration 9: 1846.494 ops/s -Iteration 10: 1779.183 ops/s -Iteration 11: 1580.581 ops/s -Iteration 12: 1243.928 ops/s -Iteration 13: 1752.277 ops/s -Iteration 14: 1775.425 ops/s -Iteration 15: 1847.345 ops/s -Iteration 16: 1935.540 ops/s -Iteration 17: 1833.612 ops/s -Iteration 18: 1579.313 ops/s -Iteration 19: 1955.545 ops/s -Iteration 20: 1970.927 ops/s - -# Run progress: 30.00% complete, ETA 00:06:16 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.136 ops/s -# Warmup Iteration 2: 220.112 ops/s -# Warmup Iteration 3: 355.817 ops/s -# Warmup Iteration 4: 388.559 ops/s -# Warmup Iteration 5: 433.302 ops/s -# Warmup Iteration 6: 533.506 ops/s -# Warmup Iteration 7: 613.867 ops/s -# Warmup Iteration 8: 772.323 ops/s -# Warmup Iteration 9: 954.274 ops/s -# Warmup Iteration 10: 928.452 ops/s -# Warmup Iteration 11: 816.781 ops/s -# Warmup Iteration 12: 908.460 ops/s -# Warmup Iteration 13: 848.713 ops/s -# Warmup Iteration 14: 1055.860 ops/s -# Warmup Iteration 15: 1067.474 ops/s -# Warmup Iteration 16: 956.918 ops/s -# Warmup Iteration 17: 975.666 ops/s -# Warmup Iteration 18: 1103.659 ops/s -# Warmup Iteration 19: 1029.149 ops/s -# Warmup Iteration 20: 1102.663 ops/s -Iteration 1: 1145.572 ops/s -Iteration 2: 1195.068 ops/s -Iteration 3: 1111.649 ops/s -Iteration 4: 1360.740 ops/s -Iteration 5: 1466.083 ops/s -Iteration 6: 1458.711 ops/s -Iteration 7: 1457.899 ops/s -Iteration 8: 1328.088 ops/s -Iteration 9: 1360.853 ops/s -Iteration 10: 1570.199 ops/s -Iteration 11: 1866.726 ops/s -Iteration 12: 1913.798 ops/s -Iteration 13: 1835.592 ops/s -Iteration 14: 1900.503 ops/s -Iteration 15: 1779.629 ops/s -Iteration 16: 1888.911 ops/s -Iteration 17: 1777.994 ops/s -Iteration 18: 1486.787 ops/s -Iteration 19: 1238.731 ops/s -Iteration 20: 1740.498 ops/s - - -Result "metrifier.benchmark.HttpBenchmark.getPerson": - 1569.770 ±(99.9%) 153.491 ops/s [Average] - (min, avg, max) = (1111.649, 1569.770, 1970.927), stdev = 272.830 - CI (99.9%): [1416.279, 1723.262] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.HttpBenchmark.getPersonLinks - -# Run progress: 40.00% complete, ETA 00:05:20 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.127 ops/s -# Warmup Iteration 2: 133.964 ops/s -# Warmup Iteration 3: 235.188 ops/s -# Warmup Iteration 4: 287.141 ops/s -# Warmup Iteration 5: 278.113 ops/s -# Warmup Iteration 6: 369.914 ops/s -# Warmup Iteration 7: 424.960 ops/s -# Warmup Iteration 8: 466.827 ops/s -# Warmup Iteration 9: 587.144 ops/s -# Warmup Iteration 10: 679.659 ops/s -# Warmup Iteration 11: 562.462 ops/s -# Warmup Iteration 12: 528.188 ops/s -# Warmup Iteration 13: 593.487 ops/s -# Warmup Iteration 14: 775.641 ops/s -# Warmup Iteration 15: 837.914 ops/s -# Warmup Iteration 16: 901.631 ops/s -# Warmup Iteration 17: 902.181 ops/s -# Warmup Iteration 18: 934.633 ops/s -# Warmup Iteration 19: 813.933 ops/s -# Warmup Iteration 20: 702.363 ops/s -Iteration 1: 839.118 ops/s -Iteration 2: 949.432 ops/s -Iteration 3: 971.930 ops/s -Iteration 4: 891.191 ops/s -Iteration 5: 888.035 ops/s -Iteration 6: 924.464 ops/s -Iteration 7: 984.107 ops/s -Iteration 8: 1002.553 ops/s -Iteration 9: 997.787 ops/s -Iteration 10: 1099.398 ops/s -Iteration 11: 1219.951 ops/s -Iteration 12: 1305.103 ops/s -Iteration 13: 1437.103 ops/s -Iteration 14: 1403.908 ops/s -Iteration 15: 1427.716 ops/s -Iteration 16: 1436.999 ops/s -Iteration 17: 1389.606 ops/s -Iteration 18: 1426.446 ops/s -Iteration 19: 1333.690 ops/s -Iteration 20: 1054.519 ops/s - -# Run progress: 50.00% complete, ETA 00:04:26 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.124 ops/s -# Warmup Iteration 2: 131.402 ops/s -# Warmup Iteration 3: 223.803 ops/s -# Warmup Iteration 4: 255.692 ops/s -# Warmup Iteration 5: 296.418 ops/s -# Warmup Iteration 6: 351.933 ops/s -# Warmup Iteration 7: 373.608 ops/s -# Warmup Iteration 8: 412.541 ops/s -# Warmup Iteration 9: 520.916 ops/s -# Warmup Iteration 10: 582.616 ops/s -# Warmup Iteration 11: 599.865 ops/s -# Warmup Iteration 12: 666.855 ops/s -# Warmup Iteration 13: 634.997 ops/s -# Warmup Iteration 14: 607.536 ops/s -# Warmup Iteration 15: 645.390 ops/s -# Warmup Iteration 16: 768.752 ops/s -# Warmup Iteration 17: 756.058 ops/s -# Warmup Iteration 18: 643.105 ops/s -# Warmup Iteration 19: 623.731 ops/s -# Warmup Iteration 20: 627.083 ops/s -Iteration 1: 634.046 ops/s -Iteration 2: 635.734 ops/s -Iteration 3: 702.738 ops/s -Iteration 4: 702.972 ops/s -Iteration 5: 771.164 ops/s -Iteration 6: 904.044 ops/s -Iteration 7: 882.728 ops/s -Iteration 8: 959.369 ops/s -Iteration 9: 997.529 ops/s -Iteration 10: 969.379 ops/s -Iteration 11: 1006.758 ops/s -Iteration 12: 1097.787 ops/s -Iteration 13: 1042.602 ops/s -Iteration 14: 1045.914 ops/s -Iteration 15: 1275.916 ops/s -Iteration 16: 1260.865 ops/s -Iteration 17: 1203.953 ops/s -Iteration 18: 1360.975 ops/s -Iteration 19: 1251.758 ops/s -Iteration 20: 1201.784 ops/s - - -Result "metrifier.benchmark.HttpBenchmark.getPersonLinks": - 1072.277 ±(99.9%) 131.565 ops/s [Average] - (min, avg, max) = (634.046, 1072.277, 1437.103), stdev = 233.857 - CI (99.9%): [940.712, 1203.842] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.HttpBenchmark.listPersons - -# Run progress: 60.00% complete, ETA 00:03:33 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.132 ops/s -# Warmup Iteration 2: 164.531 ops/s -# Warmup Iteration 3: 287.098 ops/s -# Warmup Iteration 4: 346.561 ops/s -# Warmup Iteration 5: 392.422 ops/s -# Warmup Iteration 6: 466.574 ops/s -# Warmup Iteration 7: 457.747 ops/s -# Warmup Iteration 8: 588.724 ops/s -# Warmup Iteration 9: 690.138 ops/s -# Warmup Iteration 10: 772.951 ops/s -# Warmup Iteration 11: 684.462 ops/s -# Warmup Iteration 12: 713.045 ops/s -# Warmup Iteration 13: 864.245 ops/s -# Warmup Iteration 14: 828.978 ops/s -# Warmup Iteration 15: 847.324 ops/s -# Warmup Iteration 16: 838.807 ops/s -# Warmup Iteration 17: 831.426 ops/s -# Warmup Iteration 18: 913.499 ops/s -# Warmup Iteration 19: 919.263 ops/s -# Warmup Iteration 20: 770.735 ops/s -Iteration 1: 788.506 ops/s -Iteration 2: 811.025 ops/s -Iteration 3: 902.517 ops/s -Iteration 4: 887.560 ops/s -Iteration 5: 947.753 ops/s -Iteration 6: 993.425 ops/s -Iteration 7: 899.379 ops/s -Iteration 8: 767.921 ops/s -Iteration 9: 1040.089 ops/s -Iteration 10: 1352.725 ops/s -Iteration 11: 1413.981 ops/s -Iteration 12: 1534.624 ops/s -Iteration 13: 1639.802 ops/s -Iteration 14: 1625.342 ops/s -Iteration 15: 1502.149 ops/s -Iteration 16: 1381.320 ops/s -Iteration 17: 1401.952 ops/s -Iteration 18: 1364.278 ops/s -Iteration 19: 1288.160 ops/s -Iteration 20: 1190.527 ops/s - -# Run progress: 70.00% complete, ETA 00:02:39 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.128 ops/s -# Warmup Iteration 2: 149.365 ops/s -# Warmup Iteration 3: 254.811 ops/s -# Warmup Iteration 4: 341.532 ops/s -# Warmup Iteration 5: 390.014 ops/s -# Warmup Iteration 6: 477.266 ops/s -# Warmup Iteration 7: 447.227 ops/s -# Warmup Iteration 8: 504.832 ops/s -# Warmup Iteration 9: 704.032 ops/s -# Warmup Iteration 10: 797.669 ops/s -# Warmup Iteration 11: 715.184 ops/s -# Warmup Iteration 12: 836.796 ops/s -# Warmup Iteration 13: 903.057 ops/s -# Warmup Iteration 14: 917.454 ops/s -# Warmup Iteration 15: 984.463 ops/s -# Warmup Iteration 16: 745.709 ops/s -# Warmup Iteration 17: 852.507 ops/s -# Warmup Iteration 18: 861.899 ops/s -# Warmup Iteration 19: 735.401 ops/s -# Warmup Iteration 20: 743.095 ops/s -Iteration 1: 768.882 ops/s -Iteration 2: 913.668 ops/s -Iteration 3: 960.738 ops/s -Iteration 4: 1002.675 ops/s -Iteration 5: 1008.548 ops/s -Iteration 6: 805.313 ops/s -Iteration 7: 1040.246 ops/s -Iteration 8: 965.695 ops/s -Iteration 9: 1085.362 ops/s -Iteration 10: 1250.257 ops/s -Iteration 11: 1330.564 ops/s -Iteration 12: 1323.816 ops/s -Iteration 13: 1386.685 ops/s -Iteration 14: 1505.622 ops/s -Iteration 15: 1476.758 ops/s -Iteration 16: 1485.842 ops/s -Iteration 17: 1491.053 ops/s -Iteration 18: 1446.873 ops/s -Iteration 19: 1483.167 ops/s -Iteration 20: 1400.869 ops/s - - -Result "metrifier.benchmark.HttpBenchmark.listPersons": - 1196.642 ±(99.9%) 153.626 ops/s [Average] - (min, avg, max) = (767.921, 1196.642, 1639.802), stdev = 273.071 - CI (99.9%): [1043.015, 1350.268] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.HttpBenchmark.programComposition - -# Run progress: 80.00% complete, ETA 00:01:46 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.126 ops/s -# Warmup Iteration 2: 24.820 ops/s -# Warmup Iteration 3: 38.095 ops/s -# Warmup Iteration 4: 39.602 ops/s -# Warmup Iteration 5: 51.141 ops/s -# Warmup Iteration 6: 61.553 ops/s -# Warmup Iteration 7: 65.855 ops/s -# Warmup Iteration 8: 84.342 ops/s -# Warmup Iteration 9: 93.210 ops/s -# Warmup Iteration 10: 105.216 ops/s -# Warmup Iteration 11: 99.768 ops/s -# Warmup Iteration 12: 97.838 ops/s -# Warmup Iteration 13: 95.544 ops/s -# Warmup Iteration 14: 116.726 ops/s -# Warmup Iteration 15: 115.554 ops/s -# Warmup Iteration 16: 130.424 ops/s -# Warmup Iteration 17: 115.120 ops/s -# Warmup Iteration 18: 124.321 ops/s -# Warmup Iteration 19: 142.909 ops/s -# Warmup Iteration 20: 145.010 ops/s -Iteration 1: 110.528 ops/s -Iteration 2: 123.425 ops/s -Iteration 3: 126.524 ops/s -Iteration 4: 124.235 ops/s -Iteration 5: 130.630 ops/s -Iteration 6: 159.176 ops/s -Iteration 7: 163.503 ops/s -Iteration 8: 184.231 ops/s -Iteration 9: 135.816 ops/s -Iteration 10: 135.833 ops/s -Iteration 11: 136.156 ops/s -Iteration 12: 129.846 ops/s -Iteration 13: 124.532 ops/s -Iteration 14: 159.788 ops/s -Iteration 15: 200.258 ops/s -Iteration 16: 177.197 ops/s -Iteration 17: 178.353 ops/s -Iteration 18: 151.999 ops/s -Iteration 19: 170.728 ops/s -Iteration 20: 163.605 ops/s - -# Run progress: 90.00% complete, ETA 00:00:53 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.134 ops/s -# Warmup Iteration 2: 25.393 ops/s -# Warmup Iteration 3: 41.870 ops/s -# Warmup Iteration 4: 39.793 ops/s -# Warmup Iteration 5: 44.297 ops/s -# Warmup Iteration 6: 54.802 ops/s -# Warmup Iteration 7: 61.872 ops/s -# Warmup Iteration 8: 73.355 ops/s -# Warmup Iteration 9: 82.194 ops/s -# Warmup Iteration 10: 83.752 ops/s -# Warmup Iteration 11: 91.549 ops/s -# Warmup Iteration 12: 80.906 ops/s -# Warmup Iteration 13: 97.008 ops/s -# Warmup Iteration 14: 110.968 ops/s -# Warmup Iteration 15: 108.896 ops/s -# Warmup Iteration 16: 107.333 ops/s -# Warmup Iteration 17: 99.983 ops/s -# Warmup Iteration 18: 83.325 ops/s -# Warmup Iteration 19: 131.745 ops/s -# Warmup Iteration 20: 121.780 ops/s -Iteration 1: 126.371 ops/s -Iteration 2: 115.972 ops/s -Iteration 3: 114.048 ops/s -Iteration 4: 139.942 ops/s -Iteration 5: 135.529 ops/s -Iteration 6: 165.053 ops/s -Iteration 7: 152.518 ops/s -Iteration 8: 159.108 ops/s -Iteration 9: 161.896 ops/s -Iteration 10: 193.854 ops/s -Iteration 11: 166.213 ops/s -Iteration 12: 170.312 ops/s -Iteration 13: 193.627 ops/s -Iteration 14: 166.631 ops/s -Iteration 15: 208.305 ops/s -Iteration 16: 199.590 ops/s -Iteration 17: 167.351 ops/s -Iteration 18: 176.327 ops/s -Iteration 19: 181.865 ops/s -Iteration 20: 182.826 ops/s - - -Result "metrifier.benchmark.HttpBenchmark.programComposition": - 156.592 ±(99.9%) 14.936 ops/s [Average] - (min, avg, max) = (110.528, 156.592, 208.305), stdev = 26.548 - CI (99.9%): [141.657, 171.528] (assumes normal distribution) - - -# Run complete. Total time: 00:08:52 - -Benchmark Mode Cnt Score Error Units -HttpBenchmark.createPerson thrpt 40 861.052 ± 106.109 ops/s -HttpBenchmark.getPerson thrpt 40 1569.770 ± 153.491 ops/s -HttpBenchmark.getPersonLinks thrpt 40 1072.277 ± 131.565 ops/s -HttpBenchmark.listPersons thrpt 40 1196.642 ± 153.626 ops/s -HttpBenchmark.programComposition thrpt 40 156.592 ± 14.936 ops/s -``` - -## jmh - frees-rpc - -```bash -[info] Running (fork) org.openjdk.jmh.Main -i 20 -wi 20 -f 2 -t 1 metrifier.benchmark.RPCBenchmark -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.RPCBenchmark.createPerson - -# Run progress: 0.00% complete, ETA 00:06:40 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.154 ops/s -# Warmup Iteration 2: 192.381 ops/s -# Warmup Iteration 3: 260.544 ops/s -# Warmup Iteration 4: 278.862 ops/s -# Warmup Iteration 5: 280.385 ops/s -# Warmup Iteration 6: 322.644 ops/s -# Warmup Iteration 7: 393.450 ops/s -# Warmup Iteration 8: 482.318 ops/s -# Warmup Iteration 9: 597.713 ops/s -# Warmup Iteration 10: 576.653 ops/s -# Warmup Iteration 11: 610.467 ops/s -# Warmup Iteration 12: 644.982 ops/s -# Warmup Iteration 13: 826.077 ops/s -# Warmup Iteration 14: 914.673 ops/s -# Warmup Iteration 15: 984.586 ops/s -# Warmup Iteration 16: 936.530 ops/s -# Warmup Iteration 17: 974.525 ops/s -# Warmup Iteration 18: 932.816 ops/s -# Warmup Iteration 19: 963.531 ops/s -# Warmup Iteration 20: 1030.966 ops/s -Iteration 1: 1035.215 ops/s -Iteration 2: 1412.778 ops/s -Iteration 3: 1305.046 ops/s -Iteration 4: 1548.403 ops/s -Iteration 5: 2128.105 ops/s -Iteration 6: 1689.179 ops/s -Iteration 7: 2014.035 ops/s -Iteration 8: 2296.389 ops/s -Iteration 9: 2020.910 ops/s -Iteration 10: 2262.050 ops/s -Iteration 11: 2217.983 ops/s -Iteration 12: 1880.587 ops/s -Iteration 13: 2176.550 ops/s -Iteration 14: 2030.937 ops/s -Iteration 15: 2179.013 ops/s -Iteration 16: 1904.921 ops/s -Iteration 17: 1626.177 ops/s -Iteration 18: 2163.083 ops/s -Iteration 19: 1851.339 ops/s -Iteration 20: 1873.239 ops/s - -# Run progress: 10.00% complete, ETA 00:08:44 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.180 ops/s -# Warmup Iteration 2: 337.431 ops/s -# Warmup Iteration 3: 428.068 ops/s -# Warmup Iteration 4: 478.148 ops/s -# Warmup Iteration 5: 565.922 ops/s -# Warmup Iteration 6: 844.749 ops/s -# Warmup Iteration 7: 1176.693 ops/s -# Warmup Iteration 8: 1163.876 ops/s -# Warmup Iteration 9: 819.152 ops/s -# Warmup Iteration 10: 1310.639 ops/s -# Warmup Iteration 11: 1565.872 ops/s -# Warmup Iteration 12: 1566.321 ops/s -# Warmup Iteration 13: 1771.814 ops/s -# Warmup Iteration 14: 2067.244 ops/s -# Warmup Iteration 15: 2378.866 ops/s -# Warmup Iteration 16: 2297.863 ops/s -# Warmup Iteration 17: 2311.644 ops/s -# Warmup Iteration 18: 2865.944 ops/s -# Warmup Iteration 19: 2364.024 ops/s -# Warmup Iteration 20: 2235.324 ops/s -Iteration 1: 2277.146 ops/s -Iteration 2: 2093.387 ops/s -Iteration 3: 2385.067 ops/s -Iteration 4: 2630.150 ops/s -Iteration 5: 2090.534 ops/s -Iteration 6: 1702.359 ops/s -Iteration 7: 2113.904 ops/s -Iteration 8: 2271.176 ops/s -Iteration 9: 2730.623 ops/s -Iteration 10: 2675.342 ops/s -Iteration 11: 2005.980 ops/s -Iteration 12: 2398.788 ops/s -Iteration 13: 2128.959 ops/s -Iteration 14: 2162.417 ops/s -Iteration 15: 2332.151 ops/s -Iteration 16: 2837.976 ops/s -Iteration 17: 2482.643 ops/s -Iteration 18: 2575.692 ops/s -Iteration 19: 2713.262 ops/s -Iteration 20: 2871.190 ops/s - - -Result "metrifier.benchmark.RPCBenchmark.createPerson": - 2127.367 ±(99.9%) 230.981 ops/s [Average] - (min, avg, max) = (1035.215, 2127.367, 2871.190), stdev = 410.568 - CI (99.9%): [1896.386, 2358.348] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.RPCBenchmark.getPerson - -# Run progress: 20.00% complete, ETA 00:07:42 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.182 ops/s -# Warmup Iteration 2: 324.330 ops/s -# Warmup Iteration 3: 410.025 ops/s -# Warmup Iteration 4: 470.636 ops/s -# Warmup Iteration 5: 541.206 ops/s -# Warmup Iteration 6: 660.464 ops/s -# Warmup Iteration 7: 905.799 ops/s -# Warmup Iteration 8: 1194.153 ops/s -# Warmup Iteration 9: 829.156 ops/s -# Warmup Iteration 10: 721.486 ops/s -# Warmup Iteration 11: 1288.038 ops/s -# Warmup Iteration 12: 1310.757 ops/s -# Warmup Iteration 13: 1486.596 ops/s -# Warmup Iteration 14: 1319.155 ops/s -# Warmup Iteration 15: 1369.844 ops/s -# Warmup Iteration 16: 1623.704 ops/s -# Warmup Iteration 17: 1400.002 ops/s -# Warmup Iteration 18: 2251.643 ops/s -# Warmup Iteration 19: 2299.739 ops/s -# Warmup Iteration 20: 2295.519 ops/s -Iteration 1: 2874.776 ops/s -Iteration 2: 3086.769 ops/s -Iteration 3: 3337.998 ops/s -Iteration 4: 3121.565 ops/s -Iteration 5: 3093.885 ops/s -Iteration 6: 3173.111 ops/s -Iteration 7: 3003.206 ops/s -Iteration 8: 2935.255 ops/s -Iteration 9: 2635.715 ops/s -Iteration 10: 2436.850 ops/s -Iteration 11: 2383.921 ops/s -Iteration 12: 3143.103 ops/s -Iteration 13: 3230.374 ops/s -Iteration 14: 3168.783 ops/s -Iteration 15: 3007.485 ops/s -Iteration 16: 2163.478 ops/s -Iteration 17: 3004.713 ops/s -Iteration 18: 2265.449 ops/s -Iteration 19: 2613.948 ops/s -Iteration 20: 3084.343 ops/s - -# Run progress: 30.00% complete, ETA 00:06:42 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.176 ops/s -# Warmup Iteration 2: 408.947 ops/s -# Warmup Iteration 3: 581.809 ops/s -# Warmup Iteration 4: 634.802 ops/s -# Warmup Iteration 5: 796.445 ops/s -# Warmup Iteration 6: 1000.073 ops/s -# Warmup Iteration 7: 1196.927 ops/s -# Warmup Iteration 8: 1212.072 ops/s -# Warmup Iteration 9: 1518.033 ops/s -# Warmup Iteration 10: 1704.838 ops/s -# Warmup Iteration 11: 1654.255 ops/s -# Warmup Iteration 12: 1702.077 ops/s -# Warmup Iteration 13: 2212.329 ops/s -# Warmup Iteration 14: 2084.896 ops/s -# Warmup Iteration 15: 2283.804 ops/s -# Warmup Iteration 16: 2214.941 ops/s -# Warmup Iteration 17: 2852.636 ops/s -# Warmup Iteration 18: 2694.319 ops/s -# Warmup Iteration 19: 3011.359 ops/s -# Warmup Iteration 20: 3202.431 ops/s -Iteration 1: 2895.884 ops/s -Iteration 2: 2777.869 ops/s -Iteration 3: 2711.071 ops/s -Iteration 4: 3002.440 ops/s -Iteration 5: 3173.874 ops/s -Iteration 6: 3122.955 ops/s -Iteration 7: 3123.562 ops/s -Iteration 8: 3168.717 ops/s -Iteration 9: 3118.827 ops/s -Iteration 10: 3060.872 ops/s -Iteration 11: 3162.299 ops/s -Iteration 12: 2801.870 ops/s -Iteration 13: 3064.543 ops/s -Iteration 14: 3061.916 ops/s -Iteration 15: 2709.526 ops/s -Iteration 16: 3117.510 ops/s -Iteration 17: 2209.893 ops/s -Iteration 18: 2066.080 ops/s -Iteration 19: 2183.551 ops/s -Iteration 20: 2063.038 ops/s - - -Result "metrifier.benchmark.RPCBenchmark.getPerson": - 2859.026 ±(99.9%) 205.242 ops/s [Average] - (min, avg, max) = (2063.038, 2859.026, 3337.998), stdev = 364.817 - CI (99.9%): [2653.784, 3064.268] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.RPCBenchmark.getPersonLinks - -# Run progress: 40.00% complete, ETA 00:05:45 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.180 ops/s -# Warmup Iteration 2: 291.306 ops/s -# Warmup Iteration 3: 434.144 ops/s -# Warmup Iteration 4: 511.565 ops/s -# Warmup Iteration 5: 531.509 ops/s -# Warmup Iteration 6: 579.052 ops/s -# Warmup Iteration 7: 912.678 ops/s -# Warmup Iteration 8: 1054.999 ops/s -# Warmup Iteration 9: 1040.767 ops/s -# Warmup Iteration 10: 953.222 ops/s -# Warmup Iteration 11: 1224.156 ops/s -# Warmup Iteration 12: 1349.741 ops/s -# Warmup Iteration 13: 1387.215 ops/s -# Warmup Iteration 14: 1471.958 ops/s -# Warmup Iteration 15: 1487.068 ops/s -# Warmup Iteration 16: 1809.709 ops/s -# Warmup Iteration 17: 1852.433 ops/s -# Warmup Iteration 18: 1524.875 ops/s -# Warmup Iteration 19: 1779.094 ops/s -# Warmup Iteration 20: 1872.224 ops/s -Iteration 1: 1623.525 ops/s -Iteration 2: 1637.059 ops/s -Iteration 3: 1437.481 ops/s -Iteration 4: 1328.963 ops/s -Iteration 5: 1525.311 ops/s -Iteration 6: 1840.821 ops/s -Iteration 7: 1870.783 ops/s -Iteration 8: 2040.122 ops/s -Iteration 9: 1883.969 ops/s -Iteration 10: 2032.336 ops/s -Iteration 11: 1983.127 ops/s -Iteration 12: 2160.460 ops/s -Iteration 13: 2090.215 ops/s -Iteration 14: 2053.201 ops/s -Iteration 15: 1950.753 ops/s -Iteration 16: 1861.109 ops/s -Iteration 17: 1968.809 ops/s -Iteration 18: 2097.212 ops/s -Iteration 19: 1739.551 ops/s -Iteration 20: 1734.083 ops/s - -# Run progress: 50.00% complete, ETA 00:04:47 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.180 ops/s -# Warmup Iteration 2: 304.170 ops/s -# Warmup Iteration 3: 332.257 ops/s -# Warmup Iteration 4: 488.218 ops/s -# Warmup Iteration 5: 661.410 ops/s -# Warmup Iteration 6: 813.314 ops/s -# Warmup Iteration 7: 970.517 ops/s -# Warmup Iteration 8: 1070.327 ops/s -# Warmup Iteration 9: 1083.941 ops/s -# Warmup Iteration 10: 1024.556 ops/s -# Warmup Iteration 11: 1312.638 ops/s -# Warmup Iteration 12: 1131.589 ops/s -# Warmup Iteration 13: 1177.159 ops/s -# Warmup Iteration 14: 1402.716 ops/s -# Warmup Iteration 15: 1178.328 ops/s -# Warmup Iteration 16: 1741.737 ops/s -# Warmup Iteration 17: 1655.404 ops/s -# Warmup Iteration 18: 1716.449 ops/s -# Warmup Iteration 19: 1823.442 ops/s -# Warmup Iteration 20: 1750.450 ops/s -Iteration 1: 1954.201 ops/s -Iteration 2: 2022.508 ops/s -Iteration 3: 2045.386 ops/s -Iteration 4: 2056.562 ops/s -Iteration 5: 1847.823 ops/s -Iteration 6: 1723.506 ops/s -Iteration 7: 2113.454 ops/s -Iteration 8: 2032.263 ops/s -Iteration 9: 2066.021 ops/s -Iteration 10: 2065.615 ops/s -Iteration 11: 2085.478 ops/s -Iteration 12: 1977.578 ops/s -Iteration 13: 2096.920 ops/s -Iteration 14: 2077.126 ops/s -Iteration 15: 2010.020 ops/s -Iteration 16: 1544.918 ops/s -Iteration 17: 1995.743 ops/s -Iteration 18: 1882.912 ops/s -Iteration 19: 1584.066 ops/s -Iteration 20: 1311.266 ops/s - - -Result "metrifier.benchmark.RPCBenchmark.getPersonLinks": - 1883.806 ±(99.9%) 127.808 ops/s [Average] - (min, avg, max) = (1311.266, 1883.806, 2160.460), stdev = 227.178 - CI (99.9%): [1755.999, 2011.614] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.RPCBenchmark.listPersons - -# Run progress: 60.00% complete, ETA 00:03:49 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.181 ops/s -# Warmup Iteration 2: 380.089 ops/s -# Warmup Iteration 3: 445.259 ops/s -# Warmup Iteration 4: 510.666 ops/s -# Warmup Iteration 5: 670.775 ops/s -# Warmup Iteration 6: 909.701 ops/s -# Warmup Iteration 7: 1235.208 ops/s -# Warmup Iteration 8: 1258.107 ops/s -# Warmup Iteration 9: 1359.628 ops/s -# Warmup Iteration 10: 1444.454 ops/s -# Warmup Iteration 11: 1381.628 ops/s -# Warmup Iteration 12: 1032.360 ops/s -# Warmup Iteration 13: 980.337 ops/s -# Warmup Iteration 14: 1458.340 ops/s -# Warmup Iteration 15: 1722.351 ops/s -# Warmup Iteration 16: 1644.471 ops/s -# Warmup Iteration 17: 1585.762 ops/s -# Warmup Iteration 18: 1918.516 ops/s -# Warmup Iteration 19: 1320.907 ops/s -# Warmup Iteration 20: 1345.907 ops/s -Iteration 1: 1213.685 ops/s -Iteration 2: 1777.066 ops/s -Iteration 3: 1483.956 ops/s -Iteration 4: 1433.393 ops/s -Iteration 5: 1262.279 ops/s -Iteration 6: 1360.825 ops/s -Iteration 7: 1259.882 ops/s -Iteration 8: 1498.685 ops/s -Iteration 9: 2081.052 ops/s -Iteration 10: 2202.749 ops/s -Iteration 11: 1820.549 ops/s -Iteration 12: 1992.385 ops/s -Iteration 13: 1612.698 ops/s -Iteration 14: 1857.307 ops/s -Iteration 15: 1699.988 ops/s -Iteration 16: 2191.358 ops/s -Iteration 17: 2014.671 ops/s -Iteration 18: 2031.415 ops/s -Iteration 19: 2028.513 ops/s -Iteration 20: 2242.841 ops/s - -# Run progress: 70.00% complete, ETA 00:02:51 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.179 ops/s -# Warmup Iteration 2: 319.701 ops/s -# Warmup Iteration 3: 437.906 ops/s -# Warmup Iteration 4: 576.166 ops/s -# Warmup Iteration 5: 657.651 ops/s -# Warmup Iteration 6: 854.376 ops/s -# Warmup Iteration 7: 1091.921 ops/s -# Warmup Iteration 8: 1213.127 ops/s -# Warmup Iteration 9: 1240.434 ops/s -# Warmup Iteration 10: 1278.139 ops/s -# Warmup Iteration 11: 1330.209 ops/s -# Warmup Iteration 12: 1568.145 ops/s -# Warmup Iteration 13: 1687.060 ops/s -# Warmup Iteration 14: 1652.584 ops/s -# Warmup Iteration 15: 1439.405 ops/s -# Warmup Iteration 16: 1645.078 ops/s -# Warmup Iteration 17: 1787.699 ops/s -# Warmup Iteration 18: 2203.023 ops/s -# Warmup Iteration 19: 1716.569 ops/s -# Warmup Iteration 20: 1906.861 ops/s -Iteration 1: 1728.809 ops/s -Iteration 2: 1631.305 ops/s -Iteration 3: 1485.830 ops/s -Iteration 4: 1536.760 ops/s -Iteration 5: 1520.312 ops/s -Iteration 6: 1345.151 ops/s -Iteration 7: 1700.131 ops/s -Iteration 8: 1764.998 ops/s -Iteration 9: 1982.751 ops/s -Iteration 10: 1967.028 ops/s -Iteration 11: 1991.093 ops/s -Iteration 12: 2260.526 ops/s -Iteration 13: 1908.764 ops/s -Iteration 14: 1562.790 ops/s -Iteration 15: 1667.919 ops/s -Iteration 16: 1732.664 ops/s -Iteration 17: 2008.773 ops/s -Iteration 18: 1798.641 ops/s -Iteration 19: 1753.723 ops/s -Iteration 20: 2070.622 ops/s - - -Result "metrifier.benchmark.RPCBenchmark.listPersons": - 1762.097 ±(99.9%) 161.918 ops/s [Average] - (min, avg, max) = (1213.685, 1762.097, 2260.526), stdev = 287.810 - CI (99.9%): [1600.179, 1924.016] (assumes normal distribution) - - -# JMH version: 1.19 -# VM version: JDK 1.8.0_131, VM 25.131-b11 -# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -# VM options: -# Warmup: 20 iterations, 1 s each -# Measurement: 20 iterations, 1 s each -# Timeout: 10 min per iteration -# Threads: 1 thread, will synchronize iterations -# Benchmark mode: Throughput, ops/time -# Benchmark: metrifier.benchmark.RPCBenchmark.programComposition - -# Run progress: 80.00% complete, ETA 00:01:54 -# Fork: 1 of 2 -# Warmup Iteration 1: 0.178 ops/s -# Warmup Iteration 2: 51.168 ops/s -# Warmup Iteration 3: 72.666 ops/s -# Warmup Iteration 4: 71.528 ops/s -# Warmup Iteration 5: 100.306 ops/s -# Warmup Iteration 6: 132.851 ops/s -# Warmup Iteration 7: 148.004 ops/s -# Warmup Iteration 8: 150.284 ops/s -# Warmup Iteration 9: 148.301 ops/s -# Warmup Iteration 10: 206.374 ops/s -# Warmup Iteration 11: 194.166 ops/s -# Warmup Iteration 12: 163.520 ops/s -# Warmup Iteration 13: 208.996 ops/s -# Warmup Iteration 14: 225.412 ops/s -# Warmup Iteration 15: 234.367 ops/s -# Warmup Iteration 16: 226.385 ops/s -# Warmup Iteration 17: 268.805 ops/s -# Warmup Iteration 18: 235.852 ops/s -# Warmup Iteration 19: 286.356 ops/s -# Warmup Iteration 20: 284.620 ops/s -Iteration 1: 254.959 ops/s -Iteration 2: 190.810 ops/s -Iteration 3: 246.704 ops/s -Iteration 4: 250.271 ops/s -Iteration 5: 267.229 ops/s -Iteration 6: 231.565 ops/s -Iteration 7: 276.484 ops/s -Iteration 8: 268.814 ops/s -Iteration 9: 266.663 ops/s -Iteration 10: 288.768 ops/s -Iteration 11: 268.739 ops/s -Iteration 12: 248.626 ops/s -Iteration 13: 249.413 ops/s -Iteration 14: 256.208 ops/s -Iteration 15: 287.790 ops/s -Iteration 16: 289.582 ops/s -Iteration 17: 278.557 ops/s -Iteration 18: 259.286 ops/s -Iteration 19: 291.819 ops/s -Iteration 20: 309.163 ops/s - -# Run progress: 90.00% complete, ETA 00:00:57 -# Fork: 2 of 2 -# Warmup Iteration 1: 0.179 ops/s -# Warmup Iteration 2: 50.884 ops/s -# Warmup Iteration 3: 72.350 ops/s -# Warmup Iteration 4: 88.128 ops/s -# Warmup Iteration 5: 115.737 ops/s -# Warmup Iteration 6: 144.979 ops/s -# Warmup Iteration 7: 136.735 ops/s -# Warmup Iteration 8: 123.185 ops/s -# Warmup Iteration 9: 164.147 ops/s -# Warmup Iteration 10: 201.256 ops/s -# Warmup Iteration 11: 194.580 ops/s -# Warmup Iteration 12: 208.549 ops/s -# Warmup Iteration 13: 260.943 ops/s -# Warmup Iteration 14: 260.571 ops/s -# Warmup Iteration 15: 270.563 ops/s -# Warmup Iteration 16: 304.469 ops/s -# Warmup Iteration 17: 305.088 ops/s -# Warmup Iteration 18: 320.412 ops/s -# Warmup Iteration 19: 297.664 ops/s -# Warmup Iteration 20: 304.921 ops/s -Iteration 1: 309.533 ops/s -Iteration 2: 265.964 ops/s -Iteration 3: 259.553 ops/s -Iteration 4: 319.399 ops/s -Iteration 5: 297.845 ops/s -Iteration 6: 314.970 ops/s -Iteration 7: 246.227 ops/s -Iteration 8: 271.487 ops/s -Iteration 9: 285.937 ops/s -Iteration 10: 247.245 ops/s -Iteration 11: 244.618 ops/s -Iteration 12: 276.502 ops/s -Iteration 13: 332.911 ops/s -Iteration 14: 339.844 ops/s -Iteration 15: 319.634 ops/s -Iteration 16: 304.013 ops/s -Iteration 17: 282.037 ops/s -Iteration 18: 208.240 ops/s -Iteration 19: 220.542 ops/s -Iteration 20: 266.379 ops/s - - -Result "metrifier.benchmark.RPCBenchmark.programComposition": - 272.358 ±(99.9%) 18.218 ops/s [Average] - (min, avg, max) = (190.810, 272.358, 339.844), stdev = 32.382 - CI (99.9%): [254.141, 290.576] (assumes normal distribution) - - -# Run complete. Total time: 00:09:32 - -Benchmark Mode Cnt Score Error Units -RPCBenchmark.createPerson thrpt 40 2127.367 ± 230.981 ops/s -RPCBenchmark.getPerson thrpt 40 2859.026 ± 205.242 ops/s -RPCBenchmark.getPersonLinks thrpt 40 1883.806 ± 127.808 ops/s -RPCBenchmark.listPersons thrpt 40 1762.097 ± 161.918 ops/s -RPCBenchmark.programComposition thrpt 40 272.358 ± 18.218 ops/s -``` - -## Summary - -### http - -```bash -# Run complete. Total time: 00:08:52 - -Benchmark Mode Cnt Score Error Units -HttpBenchmark.createPerson thrpt 40 861.052 ± 106.109 ops/s -HttpBenchmark.getPerson thrpt 40 1569.770 ± 153.491 ops/s -HttpBenchmark.getPersonLinks thrpt 40 1072.277 ± 131.565 ops/s -HttpBenchmark.listPersons thrpt 40 1196.642 ± 153.626 ops/s -HttpBenchmark.programComposition thrpt 40 156.592 ± 14.936 ops/s -``` - - -### frees-rpc - -```bash -# Run complete. Total time: 00:09:32 - -Benchmark Mode Cnt Score Error Units -RPCBenchmark.createPerson thrpt 40 2127.367 ± 230.981 ops/s -RPCBenchmark.getPerson thrpt 40 2859.026 ± 205.242 ops/s -RPCBenchmark.getPersonLinks thrpt 40 1883.806 ± 127.808 ops/s -RPCBenchmark.listPersons thrpt 40 1762.097 ± 161.918 ops/s -RPCBenchmark.programComposition thrpt 40 272.358 ± 18.218 ops/s -``` diff --git a/README.md b/README.md index 4c3b061..59986ae 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,52 @@ Comparing `HTTP` against `frees-rpc` services. + + +**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* + +- [Running Demo](#running-demo) + - [http](#http) + - [frees-rpc](#frees-rpc) +- [Running Benchmarks Locally](#running-benchmarks-locally) + - [HTTP Benchmarks](#http-benchmarks) + - [frees-rpc Benchmarks](#frees-rpc-benchmarks) +- [Running Benchmarks on Google Cloud Platform](#running-benchmarks-on-google-cloud-platform) + - [Assembling metrifier](#assembling-metrifier) + - [Uploading jars to Google Cloud Storage](#uploading-jars-to-google-cloud-storage) + - [Provisioning the Infrastructure](#provisioning-the-infrastructure) + - [HTTP Benchmarks](#http-benchmarks-1) + - [Running the Server](#running-the-server) + - [Running the Benchmarks](#running-the-benchmarks) + - [frees-rpc Benchmarks](#frees-rpc-benchmarks-1) + - [Running the Server](#running-the-server-1) + - [Running the Benchmarks](#running-the-benchmarks-1) +- [Benchmark Results](#benchmark-results) + - [Running Benchmarks Locally](#running-benchmarks-locally-1) + - [Machine Details](#machine-details) + - [http vs frees-rpc](#http-vs-frees-rpc) + - [Comparing benchmarks one by one](#comparing-benchmarks-one-by-one) + - [createPerson](#createperson) + - [getPerson](#getperson) + - [getPersonLinks](#getpersonlinks) + - [listPersons](#listpersons) + - [programComposition](#programcomposition) + - [Comparing benchmarks in Charts](#comparing-benchmarks-in-charts) + - [Running Benchmarks on GCP](#running-benchmarks-on-gcp) + - [Server GCE instance Details](#server-gce-instance-details) + - [Benchmarks GCE instance Details](#benchmarks-gce-instance-details) + - [http vs frees-rpc](#http-vs-frees-rpc-1) + - [Comparing benchmarks one by one](#comparing-benchmarks-one-by-one-1) + - [createPerson](#createperson-1) + - [getPerson](#getperson-1) + - [getPersonLinks](#getpersonlinks-1) + - [listPersons](#listpersons-1) + - [programComposition](#programcomposition-1) + - [Comparing benchmarks in Charts](#comparing-benchmarks-in-charts-1) + - [Conclusion](#conclusion) + + + ## Running Demo ### http @@ -44,7 +90,7 @@ By default, host and port will be `localhost` and `8080`, respectively. You can * Host: `rpc.host` VS `RPC_HOST`. * Port: `rpc.port` VS `RPC_PORT`. -## Running Benchmarks +## Running Benchmarks Locally We are using the [Java Microbenchmark Harness (JMH)](http://openjdk.java.net/projects/code-tools/jmh/) tool, which is helping us to get an experimental answer to a basic question about which implementation executes fastest among: @@ -55,7 +101,7 @@ We are using the [Java Microbenchmark Harness (JMH)](http://openjdk.java.net/pro * `freestyle`, version `0.4.1`. * `frees-rpc`, version `0.1.2` (atop of [gRPC](https://grpc.io/), version `1.6.1`). -### http +### HTTP Benchmarks * Run Server: @@ -66,12 +112,12 @@ sbt "http/runMain metrifier.http.server.HttpServer" * Run Benchmarks: ```bash -sbt "bench/jmh:run -o http-benchmark-results.txt -i 20 -wi 20 -f 2 -t 1 metrifier.benchmark.HttpBenchmark" +sbt "bench/jmh:run -o http-benchmark-results.txt -i 20 -wi 20 -f 2 -t 4 metrifier.benchmark.HttpBenchmark" ``` -Which means "20 iterations", "20 warmup iterations", "2 forks", "1 thread". +Which means "20 iterations", "20 warmup iterations", "2 forks", "4 threads". -### frees-rpc +### frees-rpc Benchmarks * Run Server: @@ -82,14 +128,154 @@ sbt "frees-rpc/runMain metrifier.rpc.server.RPCServer" * Run Benchmarks: ```bash -sbt "bench/jmh:run -o rpc-benchmark-results.txt -i 20 -wi 20 -f 2 -t 1 metrifier.benchmark.RPCBenchmark" +sbt "bench/jmh:run -o rpc-benchmark-results.txt -i 20 -wi 20 -f 2 -t 4 metrifier.benchmark.RPCBenchmark" +``` + +Which means "20 iterations", "20 warmup iterations", "2 forks", "4 threads". + +## Running Benchmarks on Google Cloud Platform + +Before starting detailing how to deploy metrifier to GCP, let's see how to assemble it. + +### Assembling metrifier + +To make a JAR file containing only the external dependencies, type: + +```bash +sbt assemblyPackageDependency +``` + +Output (assuming we are in the project path): + +```bash +bench/target/scala-2.12/metrifier-bench-assembly-[project-version]-deps.jar +demo/target/scala-2.12/metrifier-demo-assembly-[project-version]-deps.jar +frees-rpc/target/scala-2.12/metrifier-frees-rpc-assembly-[project-version]-deps.jar +http/target/scala-2.12/metrifier-http-assembly-[project-version]-deps.jar +shared/target/scala-2.12/metrifier-shared-assembly-[project-version]-deps.jar +``` + +This is intended to be used with a JAR that only contains your project, so now, you can write: + +```bash +sbt assembly +``` + +And we'll get the following artifacts as the result: + +```bash +bench/target/scala-2.12/metrifier-bench-assembly-[project-version].jar +demo/target/scala-2.12/metrifier-demo-assembly-[project-version].jar +frees-rpc/target/scala-2.12/metrifier-frees-rpc-assembly-[project-version].jar +http/target/scala-2.12/metrifier-http-assembly-[project-version].jar +shared/target/scala-2.12/metrifier-shared-assembly-[project-version].jar +``` + +### Uploading jars to Google Cloud Storage + +In this case, we've created a bucket named as `metrifier` within our GCP project. Assuming this name, these would be the set of commands to run (we're skipping the `bench` artifacts since we are not going to use them): + +```bash +export METRIFIER_VERSION=0.0.2 +gsutil cp demo/target/scala-2.12/metrifier-demo-assembly-${METRIFIER_VERSION}-deps.jar gs://metrifier/jars +gsutil cp frees-rpc/target/scala-2.12/metrifier-frees-rpc-assembly-${METRIFIER_VERSION}-deps.jar gs://metrifier/jars +gsutil cp http/target/scala-2.12/metrifier-http-assembly-${METRIFIER_VERSION}-deps.jar gs://metrifier/jars +gsutil cp shared/target/scala-2.12/metrifier-shared-assembly-${METRIFIER_VERSION}-deps.jar gs://metrifier/jars +gsutil cp demo/target/scala-2.12/metrifier-demo-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp frees-rpc/target/scala-2.12/metrifier-frees-rpc-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp http/target/scala-2.12/metrifier-http-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp shared/target/scala-2.12/metrifier-shared-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +``` + +If the project dependencies have not changed, you could just upload the project JARs: + +```bash +export METRIFIER_VERSION=0.0.2 +gsutil cp demo/target/scala-2.12/metrifier-demo-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp frees-rpc/target/scala-2.12/metrifier-frees-rpc-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp http/target/scala-2.12/metrifier-http-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +gsutil cp shared/target/scala-2.12/metrifier-shared-assembly-${METRIFIER_VERSION}.jar gs://metrifier/jars +``` + +### Provisioning the Infrastructure + +See [this guide](deploy/README.md) to get information about how to deploy and to provision the different services in [Google Compute Engine](https://cloud.google.com/compute/). + +Once everything is up, follow the next sections to run the benchmarks atop GCP. + +### HTTP Benchmarks + +#### Running the Server + +1. SSH into `http-server-vm` instance. +2. Run the HTTP Server: +```bash +export METRIFIER_VERSION=0.0.2 +env \ + HTTP_HOST=http-server-vm \ + HTTP_PORT=8080 \ + java -cp \ + /metrifier/jars/metrifier-shared-assembly-${METRIFIER_VERSION}-deps.jar:/metrifier/jars/metrifier-shared-assembly-${METRIFIER_VERSION}.jar:/metrifier/jars/metrifier-http-assembly-${METRIFIER_VERSION}-deps.jar:/metrifier/jars/metrifier-http-assembly-${METRIFIER_VERSION}.jar \ + metrifier.http.server.HttpServer +``` + +#### Running the Benchmarks + +1. SSH into `http-jmh-vm` instance. +2. Run the following `GET` to fetch all the persons (checking connectivity): +```bash +curl "http://http-server-vm:8080/person" +``` +3. If step was successful, run the benchmarks: +```bash +cd /metrifier/repo +env \ + HTTP_HOST=http-server-vm \ + HTTP_PORT=8080 \ + sbt "bench/jmh:run -o /metrifier/bench_results/http-benchmark-results.txt -i 20 -wi 20 -f 2 -t 4 metrifier.benchmark.HttpBenchmark" +``` + +Given the port `8080` was opened to the exterior when deploying the cluster with Google Cloud Manager, you could even run the benchmarks from your local machine, using the external IP address (changing to HTTP_HOST=[HTTP_SERVER_INSTANCE_EXTERNAL_IP]). + +### frees-rpc Benchmarks + +#### Running the Server + +1. SSH into `rpc-server-vm` instance. +2. Run the RPC Server: +```bash +export METRIFIER_VERSION=0.0.2 +env \ + RPC_HOST=rpc-server-vm \ + RPC_PORT=8080 \ + java -cp \ + /metrifier/jars/metrifier-shared-assembly-${METRIFIER_VERSION}-deps.jar:/metrifier/jars/metrifier-shared-assembly-${METRIFIER_VERSION}.jar:/metrifier/jars/metrifier-frees-rpc-assembly-${METRIFIER_VERSION}-deps.jar:/metrifier/jars/metrifier-frees-rpc-assembly-${METRIFIER_VERSION}.jar \ + metrifier.rpc.server.RPCServer ``` -Which means "20 iterations", "20 warmup iterations", "2 forks", "1 thread". +#### Running the Benchmarks + +1. SSH into `rpc-jmh-vm` instance. +2. Run the benchmarks: +```bash +cd /metrifier/repo +env \ + RPC_HOST=rpc-server-vm \ + RPC_PORT=8080 \ + sbt "bench/jmh:run -o /metrifier/bench_results/rpc-benchmark-results.txt -i 20 -wi 20 -f 2 -t 4 metrifier.benchmark.RPCBenchmark" +``` + +As we mentioned for the Http benchmarks, in this case we could also run the benchmarks from our local machine, using the external IP address (changing to RPC_HOST=[RPC_SERVER_INSTANCE_EXTERNAL_IP]). + +## Benchmark Results + +We've experimented with two different environments, local (development laptop) and the cloud (GCP). +Expanded version of these results are in: -### Benchmark Results +* [BENCHMARK_RESULTS_LOCAL.md](results/BENCHMARK_RESULTS_LOCAL.md) file for the local environment. +* [BENCHMARK_RESULTS_GCP.md](results/BENCHMARK_RESULTS_GCP.md) file for the GCP version. -Expanded version is in the [BENCHMARK_RESULTS.md](BENCHMARK_RESULTS.md) file. +### Running Benchmarks Locally #### Machine Details @@ -102,109 +288,178 @@ Expanded version is in the [BENCHMARK_RESULTS.md](BENCHMARK_RESULTS.md) file. * L3 Cache: 3 MB * Memory: 16 GB -#### http vs frees-rpc summary +#### http vs frees-rpc * HttpBenchmark Raw output: ```bash -# Run complete. Total time: 00:08:52 +# Run complete. Total time: 00:08:46 Benchmark Mode Cnt Score Error Units -HttpBenchmark.createPerson thrpt 40 861.052 ± 106.109 ops/s -HttpBenchmark.getPerson thrpt 40 1569.770 ± 153.491 ops/s -HttpBenchmark.getPersonLinks thrpt 40 1072.277 ± 131.565 ops/s -HttpBenchmark.listPersons thrpt 40 1196.642 ± 153.626 ops/s -HttpBenchmark.programComposition thrpt 40 156.592 ± 14.936 ops/s +HttpBenchmark.createPerson thrpt 40 4620.771 ± 117.685 ops/s +HttpBenchmark.getPerson thrpt 40 5744.610 ± 609.674 ops/s +HttpBenchmark.getPersonLinks thrpt 40 3526.018 ± 398.348 ops/s +HttpBenchmark.listPersons thrpt 40 4364.214 ± 366.537 ops/s +HttpBenchmark.programComposition thrpt 40 593.829 ± 31.651 ops/s ``` * RPCBenchmark Raw output: ```bash -# Run complete. Total time: 00:09:32 +# Run complete. Total time: 00:09:31 Benchmark Mode Cnt Score Error Units -RPCBenchmark.createPerson thrpt 40 2127.367 ± 230.981 ops/s -RPCBenchmark.getPerson thrpt 40 2859.026 ± 205.242 ops/s -RPCBenchmark.getPersonLinks thrpt 40 1883.806 ± 127.808 ops/s -RPCBenchmark.listPersons thrpt 40 1762.097 ± 161.918 ops/s -RPCBenchmark.programComposition thrpt 40 272.358 ± 18.218 ops/s +RPCBenchmark.createPerson thrpt 40 4649.463 ± 405.442 ops/s +RPCBenchmark.getPerson thrpt 40 6679.876 ± 666.530 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5601.888 ± 339.340 ops/s +RPCBenchmark.listPersons thrpt 40 5730.113 ± 473.916 ops/s +RPCBenchmark.programComposition thrpt 40 782.015 ± 78.340 ops/s ``` -##### Summary +#### Comparing benchmarks one by one -###### **createPerson** +##### createPerson Source | Mode | Cnt | Score | Error | Units --- | --- | --- | --- | --- | --- -HttpBenchmark.createPerson | thrpt | 40 | 861.052 | 106.109 | ops/s -RPCBenchmark.createPerson | thrpt | 40 | 2127.367 | 230.981 | ops/s +HttpBenchmark.createPerson | thrpt | 40 | 4620.771 | 117.685 | ops/s +RPCBenchmark.createPerson | thrpt | 40 | 4649.463 | 405.442 | ops/s -###### **getPerson** +##### getPerson Source | Mode | Cnt | Score | Error | Units --- | --- | --- | --- | --- | --- -HttpBenchmark.getPerson | thrpt | 40 | 1569.770 | 153.491 | ops/s -RPCBenchmark.getPerson | thrpt | 40 | 2859.026 | 205.242 | ops/s +HttpBenchmark.getPerson | thrpt | 40 | 5744.610 | 609.674 | ops/s +RPCBenchmark.getPerson | thrpt | 40 | 6679.876 | 666.530 | ops/s -###### **getPersonLinks** +##### getPersonLinks Source | Mode | Cnt | Score | Error | Units --- | --- | --- | --- | --- | --- -HttpBenchmark.getPersonLinks | thrpt | 40 | 1072.277 | 131.565 | ops/s -RPCBenchmark.getPersonLinks | thrpt | 40 | 1883.806 | 127.808 | ops/s +HttpBenchmark.getPersonLinks | thrpt | 40 | 3526.018 | 398.348 | ops/s +RPCBenchmark.getPersonLinks | thrpt | 40 | 5601.888 | 339.340 | ops/s -###### **listPersons** +##### listPersons Source | Mode | Cnt | Score | Error | Units --- | --- | --- | --- | --- | --- -HttpBenchmark.listPersons | thrpt | 40 | 1196.642 | 153.626 | ops/s -RPCBenchmark.listPersons | thrpt | 40 | 1762.097 | 161.918 | ops/s +HttpBenchmark.listPersons | thrpt | 40 | 4364.214 | 366.537 | ops/s +RPCBenchmark.listPersons | thrpt | 40 | 5730.113 | 473.916 | ops/s -###### **programComposition** +##### programComposition Source | Mode | Cnt | Score | Error | Units --- | --- | --- | --- | --- | --- -HttpBenchmark.programComposition | thrpt | 40 | 156.592 | 14.936 | ops/s -RPCBenchmark.programComposition | thrpt | 40 | 272.358 | 18.218 | ops/s +HttpBenchmark.programComposition | thrpt | 40 | 593.829 | 31.651 | ops/s +RPCBenchmark.programComposition | thrpt | 40 | 782.015 | 78.340 | ops/s -##### Comparing both in Charts +#### Comparing benchmarks in Charts You can find the following charts in [this jsfiddle](http://jsfiddle.net/juanpedromoreno/sjw5jgrj/). * Bar Chart -![bar-chart-bench](chart-bar.png) +![bar-chart-bench](charts/chart-bar-local.png) * Radar Chart -![radar-chart-bench](chart-radar.png) +![radar-chart-bench](charts/chart-radar-local.png) -#### Conclusion +### Running Benchmarks on GCP -Using JMH, we have checked out quickly the performance characteristics for both service architectures, and we can say that the RPC approach is noticeably faster. +We are implementing two Google Compute Engine instances, one for the server (`n1-standard-2`), another one for the benchmarks (`n1-standard-1`). See [Google Docs - Machine Types](https://cloud.google.com/compute/docs/machine-types) for deeper information. -## Running in Google Cloud Platform +#### Server GCE instance Details -See [this guide](deploy/README.md) to get information about how to deploy the different services in [Google Compute Engine](https://cloud.google.com/compute/). +* n1-standard-2. +* 2 virtual CPUs. +* 7.5 GB of memory. -### Running the HTTP Server +#### Benchmarks GCE instance Details + +* n1-standard-1. +* 1 virtual CPU. +* 3.75 GB of memory. + +#### http vs frees-rpc + +* HttpBenchmark Raw output: -1. SSH into `http-server-vm` instance. -2. Clone the project: -```bash -git clone https://github.com/47deg/metrifier.git && cd metrifier -``` -3. Run the HTTP Server: ```bash -sbt "http/runMain metrifier.http.server.HttpServer" +# Run complete. Total time: 00:07:13 + +Benchmark Mode Cnt Score Error Units +HttpBenchmark.createPerson thrpt 40 2792.105 ± 126.448 ops/s +HttpBenchmark.getPerson thrpt 40 2955.287 ± 139.535 ops/s +HttpBenchmark.getPersonLinks thrpt 40 2029.031 ± 124.303 ops/s +HttpBenchmark.listPersons thrpt 40 2569.887 ± 167.753 ops/s +HttpBenchmark.programComposition thrpt 40 318.553 ± 20.476 ops/s ``` -### Chek out the HTTP Server +* RPCBenchmark Raw output: -1. SSH into `http-jmh-vm` instance. -2. Clone the project: ```bash -git clone https://github.com/47deg/metrifier.git && cd metrifier +# Run complete. Total time: 00:07:07 + +Benchmark Mode Cnt Score Error Units +RPCBenchmark.createPerson thrpt 40 10637.672 ± 643.970 ops/s +RPCBenchmark.getPerson thrpt 40 13579.929 ± 530.903 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5393.624 ± 295.557 ops/s +RPCBenchmark.listPersons thrpt 40 8224.560 ± 613.983 ops/s +RPCBenchmark.programComposition thrpt 40 1111.968 ± 44.460 ops/s ``` -3. Run the following `GET` to fetch all the persons (replace `[INTERNAL_IP]` with the internal IP address asigned to the `http-jmh-vm` instance): -```bash -curl "http://[INTERNAL_IP]:8080/person" -``` \ No newline at end of file + +#### Comparing benchmarks one by one + +##### createPerson + +Source | Mode | Cnt | Score | Error | Units +--- | --- | --- | --- | --- | --- +HttpBenchmark.createPerson | thrpt | 40 | 2792.105 | 126.448 | ops/s +RPCBenchmark.createPerson | thrpt | 40 | 10637.672 | 643.970 | ops/s + +##### getPerson + +Source | Mode | Cnt | Score | Error | Units +--- | --- | --- | --- | --- | --- +HttpBenchmark.getPerson | thrpt | 40 | 2955.287 | 139.535 | ops/s +RPCBenchmark.getPerson | thrpt | 40 | 13579.929 | 530.903 | ops/s + +##### getPersonLinks + +Source | Mode | Cnt | Score | Error | Units +--- | --- | --- | --- | --- | --- +HttpBenchmark.getPersonLinks | thrpt | 40 | 2029.031 | 124.303 | ops/s +RPCBenchmark.getPersonLinks | thrpt | 40 | 5393.624 | 295.557 | ops/s + +##### listPersons + +Source | Mode | Cnt | Score | Error | Units +--- | --- | --- | --- | --- | --- +HttpBenchmark.listPersons | thrpt | 40 | 2569.887 | 167.753 | ops/s +RPCBenchmark.listPersons | thrpt | 40 | 8224.560 | 613.983 | ops/s + +##### programComposition + +Source | Mode | Cnt | Score | Error | Units +--- | --- | --- | --- | --- | --- +HttpBenchmark.programComposition | thrpt | 40 | 318.553 | 20.476 | ops/s +RPCBenchmark.programComposition | thrpt | 40 | 1111.968 | 44.460 | ops/s + +#### Comparing benchmarks in Charts + +You can find the following charts in [this jsfiddle](http://jsfiddle.net/juanpedromoreno/sjw5jgrj/). + +* Bar Chart +![bar-chart-bench](charts/chart-bar-gcp.png) + +* Radar Chart +![radar-chart-bench](charts/chart-radar-gcp.png) + + +### Conclusion + +Using JMH, we have checked out quickly the performance characteristics for both service architectures trying out in two different ecosystems: + +* Local Environment +* GCP Environment + +As we have seen, the RPC solution in this case is noticeably faster. Moreover, when network traffic enters the scene, the differences between both are bigger. diff --git a/build.sbt b/build.sbt index 9324df5..c91dcb5 100644 --- a/build.sbt +++ b/build.sbt @@ -1,12 +1,14 @@ lazy val shared = project .in(file("shared")) .settings(moduleName := "shared") + .settings(name := n(moduleName.value)) lazy val http = project .in(file("http")) .dependsOn(shared) .aggregate(shared) .settings(moduleName := "http") + .settings(name := n(moduleName.value)) .settings(libraryDependencies ++= httpDependencies) lazy val `frees-rpc` = project @@ -14,6 +16,7 @@ lazy val `frees-rpc` = project .dependsOn(shared) .aggregate(shared) .settings(moduleName := "frees-rpc") + .settings(name := n(moduleName.value)) .settings(libraryDependencies ++= rpcDependencies) .settings(scalaMetaSettings: _*) @@ -22,6 +25,7 @@ lazy val demo = project .dependsOn(http, `frees-rpc`) .aggregate(http, `frees-rpc`) .settings(moduleName := "demo") + .settings(name := n(moduleName.value)) .settings(scalaMetaSettings: _*) lazy val bench = project @@ -29,5 +33,6 @@ lazy val bench = project .dependsOn(http, `frees-rpc`) .aggregate(http, `frees-rpc`) .settings(moduleName := "bench") + .settings(name := n(moduleName.value)) .settings(scalaMetaSettings: _*) .enablePlugins(JmhPlugin) \ No newline at end of file diff --git a/chart-bar.png b/chart-bar.png deleted file mode 100644 index a1fe437bdb746391b15bfae8afc7a8068660640f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33402 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 pc70=Lefq$k0p&iYsbTf)bcQ*q_!*JgL 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 z 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 z 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 LI%);iE&cxwlxM?Kq*R>UZe<8 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 literal 0 HcmV?d00001 diff --git a/charts/chart-bar-local.png b/charts/chart-bar-local.png new file mode 100644 index 0000000000000000000000000000000000000000..997599ae4c047ccb0d0ed5e1cc163c1ef1284f0d GIT binary patch literal 36931 zcmeFa2UL?=v@R-$g1Tvnf>MIA6_FBA5UIh9fQo>M3eo~10#ZT`p(LViK~bV2MOsj# zC;}?I29%=G2}Nl^S_mz)5J-K0(5;4j&$;8=_r|#Q-J@eT#?MOrRpy#&uKCTDJ7-J` z`8V&{yl&k({*xz;pIf(XJq7r`k8dN;@_NKef89E+U>7~TGbi=*q|bQ6uDZB6u3NYN zp@W^>fs+dRKiJ#b*?nk|m)qeN|J{d+8dxTIu9CYwJNVp~3gpw*{Bg zRq;IoPu^%ewLnMU(hGu_JC5W&@xHiMqnI4Z1wVDo>(Ki3GQ1Cx63-kV%Al%TZ#*0`n`?u*;Dj{I@OXx$g?lR||X z!;=K;t*(Fmxbu#jZXxdnrEu}8>$vy&)qPdxx*uLIJGrq$J?)^T?$g?+c+p*dc=HN1 z91J*Ed~pB4xWi%xEe?$zIvVr*;^XTg8U)evI~>!U9`8TOt#{-?wK}9ICI8QY6Nc4? z!Iw-8t3On=u6r&Z;v|#`;SDu*6468pH9$X9*}Z72s_MHbWE5Xl^*Tgw{mmM=TXCPX zHf}_^ZoKVI*t|7j>sJ9Mdfi{)(8Q~5JoXDml@Goips`qayVkF#{kicrb{mVusu*Xn zuo0n4>xZXw1=jrucNx6rx>XR^hh&%Y7QPn7r!^d4?n?GoV3!@00^B`;eOk9pD?kHy zba(W%mkw}u^YGCK(B8B94GrL#-3;C%z4{ejSM5C(#%HAUVBU_>s!A$K2lwb~mX?;* z^1gCa-YY436N_4U*MgW+(v68x|d%-ad9tgfyOK6nUx=#V1t4MiV>hp&Br zqKA*nw@&`)=eVPfgSU&PuM5mWn%%GcWtg9@_MScLfqwk^Hc!U@m!Bhf_J0HL`)xW9S+A#z& zs79-Ncw#HxpLWulGK=?~7{PaKzEHKHqqM_PgiHUT@LA!r$7`aEt9nYMBP@BoRG&&w z+WvY6&!$cJpYLwsad?z4auv#22qIdOZY8*nHIFtn`siRjCaDw3Nr;w(frKFJLM7pJ zuH&@4n(P)XZXP}%Y2EAVzCE@2^YOy{>z63m=7lAT-|e z+x$EBz4jWe%fH$bpO07=>p9SKr(OQys}J>kclP-2UG1e;WW1~?`^Z-I+(LHi^yh7x&zLX@j zEk!8NPf_u#70e>hr^N`*?1E%ujJ23n1d?B71~I7Ql{hS7wz?x1iY2%ObspnQOEZd1 zmu1qhnx70L%c3L6$rOpCy89sf*?rVSGYtK>Kr3ctilA|NhWgR8{XV2rXS#qgK)flN z7}vYiT?q^h`O?r%Lu>1hiMWjN1E~AnYW)Fv`ej3(!Rmw87X=NmVEtYQ@T8ijyNTD{Sq4b>Rz1E&iZx(}+mX%w2h%s|V zwzQ}G{p6l-6f3Cvc~&JYDgRpMOG%|}M17{i%KYedSWHdA)`TPOpC;esm*4W!+QVmP z5ozd#&K-51(~3EEb7O{MnkR@ML__aVJ&=o5 z+!N@gq+Txt(^U@DRpmx8r!9?L9KZd!jjtwiA{HBXRwqgv<*QdZDa(q#DiL6(L9M7C z@e}U3d@0}gtW-1;gJ&r5OKPY{vO>4D=cGMY`nv_C6!u#{(Ed`~aV5VCYfYqJ#B3NIdegi)W1j9x!$gzw+@>IjaQ2Jbxs-ZR%Q#_kQ%-(I*?{$cyM;6>|y{4M|q29M4i$z`&UsBxyBu z0o#ThK#UVTukH1ura|i7R|GzYKK?6MLHXvMt2>T=W==UZpG47zK|T*6kr8_%CDV)g zg3YL%3`#l{IqkZDP_!;S2y*&VY1ZDP#@tV$G{Y-2jgyWj))tb2X$f+bpm!yGW7c0; zjD>mg@@K=eXMN1&UG?%1owM;oVLWI$4M`i3)rq00ER{@mS`?eX*df#GRnFIR^OQYgATIOj9jb$6a6rw8 zU><^E>`?;+W%+0H@^Vu`x7CvV)HZVcR@m+1(8t*epI9{6f%0Ndu-Ic=Ns4nYyElbo`e2$Shsg37rlu_a7Hwi! zH$$57R%I`J@Fr^yOrC{X>6sDhL<@;^XVs6xcs~0y>&S=UGa)g{)EB0hgp5ZR^4#Ht zanE~pxtH=vRm=vLv|dW&I&Az)!La=6{gt^a8mR?#P;0g-*QXfmKC01x8%$NKFJ~1m z{tZDYL9wW=FN6^_;mi2>`2`F^0qfP8VTwOjcI2@^jo`_WfyP}!T@Up;qqHlv z-7AUuu6>a_|E2+U`tf9Bu2=HtUV}x4Km_8BdlBB>Nare||K56Nr(-etNL?Dwn_D=? zSlh&8#Ml$>H}O~l=}29W``rf70cIq8bSHO`eB=VERz8EErkztU_EPKco~~NQjdS}x z-DnR-_BAR|4=dS(H|)RsCyPm&F$x3C)kP-E`sExRI2flhTxH#@4R850L&3vgfz!Lg z{HJ#0DGeR z?I1=Z?sdJCx-SedFWhB&6yZIvqosi>$kAmpBkr7Ygl2htdkH;JJmEE<|8|n|a_b??>$Go)t`%Y&E%anhvguC2=7^FIA z(Bx!8_Fo*`JJDzPS%GB6+@;nl4@FB&4&_i!>( zg9T0Wc>SD`T>q4kL1C)R=-$7sX%!Ydp6nSwc6#71LVa_5g5?_P{|KK?*gq<_GWud( z`36XBCgKUd7p}}1zIg00@tR!AgK+oJOZ*E)l=I{Cu@i)lPkuGdOjjngVCCw4HEWa& z6%fer=NQDRPnqSOVE6#*J}l73 zMPpfhp@}r)F)e(2*n|w+fv6`Cik8ks#lIZ;_Ety;r3QDP>I@+<`$&1Fl|F%|$x3Ks zEChyZ5S~5iuW%R|;;97cj)X9m^FUcUdM`iM7;p~v6j!5Y&Sw^lIGA9RWw7=_-A@dk zd{&!?%*|zCQ+C2rSU3!`qf-v%XY<9m!QUX%+p0*Rud{MAr10WZ*U5&_Pf!P}xunWr z>^(KRPjDvK%5XfgGTaozmnzl?$@5h|wxack{21#$Lzs6CevCF$@G8$PP}F%LZNP8{ z>a#m|BSZ_udQ(pzMa(M)f76gV`4%m^D&I~boH{$w|M(6vb_<1q)5{I7;}0p+*^nIM z!e{}u%<=qUTSh*v<%H3xui%*xsay!_Z}4c5S zr4cnIY+7QXq4#qCvBOZC__vI_MWSiQq1?!a{c*dX$xF}yco4KZJIMb}^}j-_Me!Fj z3p*>PJMpJ`gL-yTRc3D5vClIXcfXw7NTsG~r~WEfC_N^f9tL4_n631XihY05Fx%y1%fw;#(7&J+|-xE8ODy*6hz;TGxe+?GTztC_^Pl zasZrs0AJy`lcq#CKvzo1hFi3;8K{%t&whac6s4v6igaZ)^*PYge>e?3iel?WlZQWM z#(s#m0sz?z)6aiZ{QuK?D>wJMkpD}jJl@-vL6}-qtgC!B>`wTb}?4;*K3L6v8eU==eDg9zAADPA4PNQ3Ybk<=RKi8GnJY)fgfx6y$oQedQF^M zMsk;sds30Vv4-!G41ZhK&iA)7%4`>hZaZfge1nUU!a_6f;~#a{gl&Dy4IsV^cTygdmx4vTKf`WoHuJs$A+rPi<9%5+qP5D;?M(*c%v1@f?txy1Kr2`0N``fQs z7qd@UZJ}hD=bC_MFFII0eIXzs5&b7d1i|Wx9zjTce+Y)d{jlY*%GCG#fjwY3-rbZ4_1Z4;&1$g(sSPacB z#9!Zz3cyk%kF(@e*{HW^3ILfd)Ww~DUt8!a@oCSU!J;yHI|eGXcqumZk;bw~!Pk(( zL$}3|amn!zNK!z%oC_}9_(es9HowHtgXGC>a0ugWL;K9Oeb0-^N8MeT;#FNbGS3o4 zvCD`apB8OgFMck^y1PBi2uFs{V|`Z~W7B6Ypxyzq0y zUDzV(u@K;T3YI8ARm(L3hY%auspQGLYD!LphRsreQ9A)Un^x{&r6bHFCHt9c0P;5d z=GErY@$Xr(_HwUs)7+eg)wG{o~Zx^e?e~X$jmjC4?Fg z81-?ioFAjF!V0Xx2>`jo43@uXV1pIwh@|)U(~^MGA0c1$WYgG2g5-1%EZyQ8 z_h|DRU>(S;7yc$7dH6c?2LY8ZXqQg#ae*Y^MHB;sJ!Q3#DVB}z*=ipW6sm2o2nurZ zKsuzD=h|9jy>#iSS6909_Rm^|*yR!A+%tV*WG~EE#^BxwnvG|H!{(!Tmy<+SWk*UGK#G|i7eK4>Y@92UFTSWhu)!x%L}so)fk6{Ifd;fzq8>=A z@>x8*asI;Z4o`5d*Z8jZp!=*%6N`%js&M zC$@gAjlmTmRxTneS3r-v8trjDU@-{&F?Gdi0YQILKaa=(8&8wUk3(&I$Z#VyNboU@ zsaY8f*nHxuu=Gs;gtGhN1AA6?SzG>fLD@ie``zO7U|*sDJv-2e!Z(y^Fx@_velmDh zb(WycQN~y`@4{o6`^sqm2$SXdPs}Czr1xMRtAxbQLNd@D4t>JgOOgilB2uXvSNSabx&ww zW$V_}%iv6uu5}o8l%IT?U%awYgI93pe4=|r;Phw1e(emqs8{0?=?JronOGz<4>MZU z4{ISLk*Hpbvy;n-8`+zxh32k^DadtWwiFpw&OS5UYw5sD4MDIa zCSqZRLCZ)rK!54UX=$L2imUksH#6?FCrH67GLbSw*X|tS>FH@iJThBNJ=pfO#AEhg zyG*J+guM5AvT+;xUWISg(g^au83wmv^i+J%=^me<8ehsQU~|P`A12dV;vRNWX8JW1tqK)vyuPHl43s0}K1smoyg0ym zIAWl~{OmydL<*KC9kzdW%lF+KSy|8~oI4|95648L9~>~4fzpR!pFhdfISK)^*|7A{ zhS&_JWW+wUK-H$V>Je{G<{E`bB99A@1$Ab1OQ|pAabryhI8pFX2r6dsV@6`kQcn=c z_hYT-Sc`ydsjmys=N9 zEF=AJ%TaB%1*xDw@ni^f@uSSj9GR^>5)wl$S{8fS?^5%y&Z&p|N`E#}xN~opp^Uz~ ztilB47Au%$qrQ%OM37%z$np*VlMee&eb&;(W@jssCpzWHEG)Y64&i;6ps5c*C*E+v z@SfPiBEyonx1ilDK~tSeId$foWYtYE2vvF?a<8<0oXWm+A}3^KO_R%EwUYtDW>dTZ z5^=W$BrV@4{>20+IbT5avOy}GHT=$s|L9i0Bq^JGcg~PXoG$kGb=#QTYmSW-dxAOa zYx@ z=z4X@Y;K|Ru`Ka9pPQjw+cSL^z%<IprY7YTGWe;3ZSRprE{VsW_jxOQess zQTZmlD2(Fjfk-8f%A(YBOW&@%@AMD7xE<&kLkWXC=NCWnTogO9S8|_nk4^|RR8FUB zrtJ%WdsF)SC!1X6b!a0gI(AjpeWz8;)7aXLCaG8(m2`gdEH41Kt<8gLY;Un#bC@1T zJ-fy6Hc7vrZ)(NQgVwR{j8_po^Q9Iyz6ds&jty*bZI?l7B`SeKl0y_^3?omIG{-)R zbmKrleZ2EjK}?|cfd9x@m~q*3We}1{eJ@}N7#UoVH3>W!iPW$8j{OKj*3V=7O?kht zi4APLGiE$RQy1ox1K!`}4{GM>?d@G?A_EG8`5VRbq54I7F>#>T)(3m#<4}ILZIF2f zVMFM}t>KdmLzO#H4enn{!};g%9N@WJXAw;O6oZ8x@Sne-yKT#|O>0fkWQV^+RZF#i z*_Su^8xDjK;Olm$57wtE$^R8KuZ?N%4N53cigB0wC|8ppv0u$c# zl)d53e};k^X?ilMMfE*_V^Tr;NMaPRqV@k^+ygvx$&1xrHvoK82!72P+}(@+DD`tq zfoA|PaLg_2o9gtVoeVJLLj5yQTZO^)4j+nAqw=3NN6_O4a!9 z=bYXdL4e<-UQTe}crI@3{eXfhU8wgDMZR?&8py{-A)mP*%ej{EV?ZCgZzS(>POn1` zICo($HP##@!OeUW?eOU{Yo;d!kV*S|=c*0l=SROu{hQR^ME-BC=H!IT|HcAjv47qo zLKJL*U#5<_FzG8UA0F%`77s(>mXZ$bCHa5H9w)@rJWk`B8c!HvDRCWTa8kb8m$$yP zfGGvA1Zih94x_bWa_G%P^E%u1ojxI(7~s82^;$D3QL< zY#c&eGR{c$4~z$tBO)7mcV%0}N+HLe`o1T3r@a?|>e7RH)@c#1?! zPj4^oSNM@05M@VfPb0P)Dg7IMTsUH`%qgXH?TkY2KBUn|WnlNuuXiWSwV~4hJ#<8v zrjFK$-*XR->{WD`$af*m$_zZ146kCnpF}>m+N^aH{RtB^u;S7fr|j~n;{~ztunB+* z8c({r8+mIhQ$ge;f9g(RVqVLsEuu<*-RyqvTSZ$o5dBq>U*J1`i_IbQ zF{AyNe#E(4+lqE&5=1H2s^HoMsgGcg!_?IDk91yQbX;Zme z^P%10_<)qSLp(PN`^%cm*3Q6GOI$@<658U$rtK>z?UP;*r+qu2I+S1(5Sbh=D+pp zKhG$8gH*|iHZatb7w7}jp@TW>l>AUCK~t^v1KWv(ySHAjk@w!Ll+kyz0ts9kk8~Fv zqLC*tNJ`DN75?kRbGDD~)W7V^YQM2z%Y0=ol|anEe9BwDQ9vR;yWdTwwS#-ID_fCq zFZ-lx*DIHa1-Iu>u2yZyJw~znE*;pAEXTkyr(m}~k^ASaeSEan#h3^;?%P)PSIYJc zbS39nTX?h8=4JKI=V~S|ii8_|1xD^3ePK?I7OB>e60T`5LOc&?9jr$1V9Rx8(m~Za z2he*x>O_sEKx*xpBdy)hIknLE%NnSX$l@$yp9`udpK9ZEx3euTC2rjQeDClnmN{#s$dGd60P;?)qpcOqv8%$+ zOgwaG)3VK(a-Ftk$)dA9tqWt3pDnnzqrxiaqq!eaZ?Z!X1V)Pnyv?LsFy$>efNgZW zS@5g=)I2A`lpKzOnT%RCoh960hY z3^$tAl81I2`S6e!QZJEUxZ8|eXZAJDInHf5HdKm4p5;R=^7q!aX)4Gd0J!N|?24+)!RQsAG(??^hQG4lCZ$5pQ zM-(@Y(eu#X0?@YgucYboMF$26c3CP%gg&qlzhhK!Ol8)rRIkHkq*kdV;O_$Zzkv4p zsU5A#sH(^Oz! zvxfLZg?lo|`eA;dcsOW=;9S6NxTJY=df5>i?~JFJRjK|4-NZbE?LMjuhZR=8{}rI3nsuzp!8PX#;A?s9@-^s?Ulxe{{Qc$c0^>I|ewBK^sqvc{ z0L=J5MQ)5+tsF`N1+#hnE zPn^igY3!{Gs9s^a){}xixs*)p6@|v_0NWjw@eM4r|Q6KG1EedBbC)(b1!%MPQJMAnFVfAyQ}N?YUG zaj3g@(k$J?*eTg7FkaKi?Fw!7kt>OPX z_>Az3s20PQ9r&w3!C^kB)}5zQBz@chYvrL&E@oRsvqMPhAJ#=mCS(wb3JON$Xbc*K zwEuAM@~jGcCe@`T{9#&sc)9kGy2lK@6;#0d$*+}q?b|pZ6cQp7TIq$V#-tOBEjz(=OmPFh^P%K*UD!U+_@!7V~<;}O`vBP9py!EyVENka*Z|y$rNvk@L-QI%6lAkH}I5&0{MMe5JV39&HlldR0b?b9zRd|e);of~}8 z&YEmtUd^<|OXkKXTzb^?7}>o@w3>6x(tLT*a69)FBRp$54YS@Tt?C)SIPOOKbwll# zK&DcrVUX3+X8kl)RF4q~XL(@5j%@sc9r@h^*cJ$HbeC;Gx~}zRJdm8AWLi0t`y2?M zDO(If1_k00&{Ln)4aSC*oo5I0gIDGw$qR&*mQ{QPgqhtr^9w%fQJw(x4&_k2G8itn zB_ri*R8YfUyK=0;rNlZk2wP#}F58;VEj%&IpC1_f={UWwj-jd$&23+i&4L?zhiaET zWU1sVqWo%oUwf$BfnN4{(%pr8;y3*Ce8GBd@lz}?|D;WBk+**e*M@$_Mx|8Ta{JzJ zvc<$oS&G!O``;Rv1B@oESBqC)r=7DqO&5^Vc;)S=Rx$6>YW(1(i)H9t?E8y3)(@HF zdU$#mav?!t1iR9L|Gd&wfyx@kKNdJTn6|Qu3Bn@`1z6qIjDBk<;uhBBLXsG#)--;MZQ)QWpECw5ItU`B za*o`0EAABP(+g0u**t4PHTNW1Yu>Z8d=atq=AMN5A-o%SNqwnUaD)ufA&-<#e@GpO z_wNm%(COqbN!wB!GkZnYY(BNJGX26;@infn&>5jjK8kRq>3$n0kQrfkX8HYX2I7>l zdR+Z@aPS|t1b5mr7F9~0#DBo}fz-MuwcHP-FN5Z8tBp}FQ(+wr-@@sBARL}j)091Z zv03*MM*IXwqvSc&Rj-$$t7G8>s5#k!GsKODZ>m_gR+XY@+nD^bi&cd68(96S3HPE)sjaHs~)5x36|D(6SR ze&tIeE!-eh%_S7_D?7+(vl0*sJt+Ac!Lfb1c0oYg|I#hDZ%IzTXU^)O0JjzNscYH; z(OT@#;wdIBkb`Zc9{}k(Je>WcR0ICjjU?TsA02%&tG}xtaWb`Z>ma}}H{mH`989+k z$X=yz@Eb6d|J$=y|A7MlIoJO;CFgjV>J12U4ozIZ(A+dg^eyePU*9iyz+2*@Jxb?p z=L5W`5>j{17l`#dSrJ4rVQ0>nTl>4jtHEq{9lCNtV`f<}JtX7wN5}s$^eXhXnEY`( zzDdf^B$09NZ`ey7O8tusL@cq$kevCiVN$2q2_x*lQSVIDY$$Jgr@76O%XqM@C-NE$ zW-5#Ew(M~wRp8d5E)}o#=e|QHGoG{4M?=)yd-9{2@-^2m{%h4xCBvCqAib$0!xUq^ z?_H3V2X;C}#jhvdcUc&S9qa}?Ysi3p!S=={yo9qW>17%V|U>y^S@&q~VB8iBG6Y z44)+^;K2g4w$l245LTLPMPM3`#Y`}s(@LLfNuoJRy#Og+UiDyoLautSu9WQh7Yy39 z;lR6))77l{TxfD6g5~7`gnA)rDkWwe7LoHKA({fBxej;ame%tMu<>Q~=N-FI3uDGE zEqAsp_^rHoqqQZ)!SGx1?9X!_8oz<5r2>69VTGq>XzhZyeSW=&!7}}jOaPlF*v@@2 zAA7i>?sGL`C$ChT;I6OQF=BVnu0#hO$beAz=odSzIso|~?0n;S@pWFq6&4`$g)H;5 z4O@1MgcOlmfW*e=-h-ZlDelu3I}7ip(KfxZc=PP#+a~M%9+Ab_m6y&>OfH>c0luq$ zpb*XFI|>7W)-PoUZ~3PdfNC`F^lfwTQ?T(B^#G+SbW~wB=H`Ej$(Sr6&c)yoydx`e zf@eoeC9Bs6!W(lcRA2l^`i3+vbf5y6ZZimbmJ`&7KWf!$NM^ z;=qQw$2we>>8JR>>_e^np3f* zmo+TZ0&Bo;mRT;Y*v8ViGcS9%Liy8JvA4-N-B#+Ft=DhN9J(6Y<`PWYTJxW*Uxv^3 z7ESCdWOB+!qesGih@CjBK{$+Q>h3W-fn|oV9p5IQ?a)G`i8Zmc2cSHK$s#Ba*Fr@ zWMkk)p)3RDD_U`hEx{!U7P#<`7_L^XY}$e*V$Y(#CoKJNUXSa9X5Xe|OYZp=fao(w zD%bWXEh=zNqAYw1f&b^W;S>6d2o3C~ITNg&@vM|^Hv zw~Bdf`Wl6pGd})@+y3{Ye~@DJ;Wwo@*!TY~_6UiY^t>)9=?Fgq#HcOsP(7yYy4surcKppl-{5 z0XPGxi||S_4lMC|%0Kt%Hj?Rs!ToP_z*jAkjP@xLeqyK zo_|>`W_)|~R&1z6K{L%?nM=JMC(Sa9*~KPq2ao)}^n}f*um4tX;s+T*cZdQuc~SrY?-(iO z#ad}W#$N?edlx5e3N~|vbiTac(rz2%=UJPuPT7y0?t~R?1)>GZ6$eDb{vBt?Mrm+;_Y|0%fCF(+xYj;Sa|P5f__@12bhcjoH%V%ewSlG zA(a>)7S)Qn(<+LcLWOAc2q>^;1VVUij@Gf9da3Hp|7j>93!@Vvk97Al>|CM5;(1%r z8X1?U{r#P9UoSH7wp8`k=Qk_#yjE7+&mYj?@Pa_%Ms4%!cVOgf%sc`2vB9_F5kIC^u~2#_V!JiIvM0WK6$Ep2yCpJgw?VHu};>VX9CW$hVCT-cki;3Co#?_M!{sb9*wWF z?R4)svze0QB!1r9Xd(J;!~Vii#(5&T#6E4%;f08p8I>n|P7lL4f9I280ru`05GDa6Kb1nD{05MAI>Bb!e4NF}|Ch*65 zHNil%yuI=>pe~Df+84CeqcJV2b0v)d2^pRQ98MinB2Mu1+#7#%b8^xSMa#z? zK)9p|0uwTyG|LM_+_KBRh{&+u171N)4Hv+yQpE)}p4%dmzHAsCercU@I}`|)47lh&gM^UB*%uDu#0g8C2X@$KRD0=FcPNEUo{?=LsN zs=~Jiz+n308{B`u!*36&K(p$g+^Jt~PoSr}Kn)7fr=t0xKj*>jzXNFQzMiq4bI|=a z0EBqUwsj+i)+c@DCeXY-`PnbZB%lDM@Bs)>IPjP_=lpc}foA@IyFcUpeoy*0rGIeW zZ}#{>iq(hT2ayv?{+1pbBKbFa{ALffoVY993U4r=6LL{WmGJ4#)hasxC~FVGQ39;xsC;cc^jQ3;@A z_b)qgIZR}LjqL!>fp?6vFocy{IaV2Pz)Z$s>G}eMRR1q~vn>k_827m5M(W)IO30$e z*-?$`m_|%dZ36fA;uV&GsdiV8dD30ATg{eaMp$1z%KlAL7~%}rkUmqUt6z+sl|;u~ zW3l}{0InNYjD$07?hZ;#?lT=I8V;Y+h>5!l@f@sD0SXx1br&92`yS8;jRlFPo-VPj zZ%*boFaYnUZUS=NGUaljA*^yATu*^34kE#*Tzq*`;8Um;H}gljm;$=4{zR~~5lCh^ z)et=cxb!NaSSAr}s`U`RE?k_X|0Lj*WyJwSi`UYmvTRf`lKMhR({8ZpSZ`1EOLuWK zw-Z1Ot<0BGEEq{=a5{6MCKR*o=|0^*PW>gcr~TNC^BeSEw$~PxmgYDLpM5SGO-64& ze*E=yKbtMZlLz*n@-aVt3@&=*?4_6CfA0$4{alyth;A0feOEH)h6HFGpzY7XII>*e|g`2PD^1Oq&rzY(Rgl?2q8j@}_cz+5o58hd*I zL4JtO;cYlHMpww`Z%W^(zk)HB;7zaQJ}e4JN*9%s>W?c$D4vnMmh3Qbyvar*q$k(! znF(z)h`VBsP|-WIq-G&;?2ngwYxU-I=ARyJANd%yz?f^3ftt8xSNO+k!aY`wXwO!y zM}&vG(n{CYe;{PWL!OhaUn9!QXym!*=gdvohuuFc$vR(e$X3wI!*D{T7n@lrDQAulXrwJ^E{; zXxQ#jbs|Rb2CcRh;X*&qf9=yHe=F)}6o0a+vaynZuD`>?Sb=U*CL;31HdQ!r(FNOe zM`Jpcv}y5XRZ8GzRR|N^*TAe(t59!J;w~;$(<$l`t(XStH3u;-l>sMKu_;mgu#MM> zVEdSr+e6GPY~3!`=P(<3Q(rF%5Fulz43nhzbmLy-+6}{o=FsSytOzjGz(Z(%&@zqd z!?yxoKQ7BqTT!v`67&F>U9N=k3S&dhw^7$8F=Qcr$etifNPBkCz#}CEWQ$HZxf=?p zn4UHqqY=@;^_mL=St*nob0*xpVxPN;<0)jw;4xlN(;loAtM&nXI1-|q-SxM9w7N2D zjbxI4TBYj=3Z)Q1M^hD#@r-$ak@P=o>8EYg-OKv@iSK}*WL8&*%0?A|1TA{B;d4C! zZ3V#=v_1M^dg-4e(4aKRYQUV`(4R4!@>U&$L~eOd|Mc^ zqDBAm?-gAitelZ}u%;w?=6>noTs~*7HJI-Amw%F9`pj=?{HBJ`@00SYh37XlepBPO zVEmN_{&!I0wPn_53xw3S_%?Pr%D)Fe2)%^#Zc-(_B|+l>6`Ytq=~0$eR8F3DiN0|0 zB;cSqiNOx$5t%fS>Ex?Clfe43h8c=QJqN&)-m;lfP*#umf|fX}+$*qKxjucsvpemus=^{7<0 zS!~M9VE?pT>;A2?s9$g@S=@hXXpjPb*RzpkkeMMJY$XJ2YL$x zc9jo2qqztt6;%Ew7HI7xP$W>TAE>%slA+VJ4O1(kwa-pe6VmXtpbNjPlYE`k<@Wv2PE(TC3w|!rNM?9$k4Nl00+wBH( z8rau`I{kUj*#cRndc1`$3Ga(xX9{UqeGvy~&v}7E76(lek9rN3@r~3++GsPF$wB8- z*45mkTz;~gz#5^e0L2>pKaP^50>`VhH0+vGyC;s4Je>kci#L3os|SH*F3Z#DbDlN+ zh{JgwCK39~CmXjkTIU}%#&jpm1G#@@waSIk00y-4d?qvN0TiH(ytyyZOUD&1p|!MJ zu991<`ccJV@as@HGuF%UCIoZ`o_DqB)RwyoEibbaDUPlsQTOTo+7>bL1ShX)k0VX{ zKe5V(jvnOS5m&NIRH+!B9k1(Xat+luyC7jEdu^tjh(l&?^XmcQw~cQPE#8gp*klGf{% z=YH3ok(6E#q2kmOsA8O~Rf2o;kXSC`G1b0O8<)}%H!D7f4E-W(9xG+`Y>8f*-Y|~(=-rITnN=r}6+VOBA|zzfbzi(kx~D zgSCFO3Z>S!gh~m2=uFiBZ7Ry6f*j*(KNqy5oQ-8tiS97SA;BWZyd7tWbGt1j>*KEWtKH0Va;glq=w{BM9pON8XeZJ%*IJAHL z!gvxIQ!Nf*vTjSmet}3@*12AvN51B2?Ez{h+am&ye*{VNI3L_E3|q_j_FI4sd$af6 z9;}Dvy-*&6(RHLsyC=%(R?7Er#>w&A2EVqZ^a-L0V%GS{cnpkmJt3Cu?Q2}$Hd}@I z;G4Rxamu4A=S_SwhDMee92bFZiV^n>no_l;;tv42`XHvrRn2fdX~dab!{>Wa*Au_j zB5O?^px_;u+Q zr9<}`#pdV+;aFvFEm@=++8k65ZQHTjxecA+Di!3GA2q$QXsc}hSK!y;xzx&}z!}3N z>legv2fZd-NgD zQhZIbAJCi`W%OVTAzuN6yrP|be@$~K(A@EH?+H%&8e9Ze>uqwE!J1|ppm}0s>l(kd zj6AUamrPyP*cDQhfM!4MO=~vk;dWq?US$-lsaL5U(Pw(cO;rJn}Et}DpyFw*_|Z?;QrSnPxUd1y`5 z(s6fyM_~kX_L_xC0=p@Br*X}}4YUFdOYe%qBC6E|!kb*gx}piR~h&eZbTf-&QFW^|kvi zcwkt^dr2W*pxj0M{#GdW*FWmnsR)Z5b{g1b6H$nT6ZaBhfoRfZ4O*haAQ4Ielp4cYq(R#&aBg&W3k2QA9DY*y~hfk`82AC&QwX38r=ep{r7cwSBZ;2{d$L&zE z9yvNbdit%qjcD9qxW_I^cN^5k^fWh5@>5;4+=n?ES`M0(7F(z-ltm=;cW3!aEZQ!q z3m8C5mj;~h`7@=HM~sWJOdFuC*#+(Nl?C3w$>BRIrVxg2U|R&`gt$ksJ&ykx-80q( z-X!>S!IxpMJ=gq5sIy3fm9+$~yj62A-XQeJVW+X)a-d2{@A8{&o{PJdRzsHic4w2+xO%z78Ze? zbXhpuKZXg?ONr&7K2?CMj6@MDGLjRUms<_nH;TI*3@6Qln9__nH0ngXBx)$7MI2v4 zo-l&agEc7SrWqG5wt?E5^WI`@fpRW^tRPck)-p>cP71O7)!L+))kv6c0juQ^!-mto z_|xuHId7)V^2VltfZ%7{M_vOV6u{ErUexO`m}eX41q2@QOVIM1TBI`Z`s-^y%1YrE zdvHd*`1|g{eQ>>k`fkKRliKKx5|e5MP@5F61h_q7j*(Fb>_R|8DJ3IitQe(oz{2w$ zq;003Rlo3MOjR^)g#gKDs6@F4%s51D(4Y0HYJfiU@0 zi(Mngws#~4h90b(tZ7jQ4U4!q4n{I>r~p-l@~IP98Rk-R6B75V+4d#H!oCBHA?jp% z2SFQLG0~Z8EE>FoV`t@kthm?KD^?LH{5+W93N^+uJ9FnZx>-v+kWCK0MjZl-K-e6eh?5D53PI%L>KF|FVFAyxw;Bs@9_% z#z&z1&davV0}9j5a|x=GZGB>%z}ZgnY?mV%>6gB_{|3wp3bY7B2%oO?9o-(Ak(E=v zCl_2emzj!B+Gmm&XZk0=i6*R-2uwysa^L}NSYA{6o!Y>QR>lt{Kl}l1*AvuYzzyldbpJQx)d#z}Q49F0O7B)q(Vv5qH3-LOj2-adWIL(ShLHX4B z^h9c=qmIsJ_8r~9@AwIE)t1QW&QUOIscH4`O)Lttib=?pZ7#ad;B5_S)|qsuEpV#0 zR=(F5{LzSVAo9IhVN-XB4`D}lvEjU`DmvX^ zj>1S*0e<78(1q$u_RlPH&rLj z3>vh)*!8!=bF+IUcODuk-;gudI#b%~L3|n}^@;qo1-e|~I24-cY8a?|V2=HJJApVn zBZP_rvEtBSd^ccB4C`a>R^?jLoE5Y+7#)bJ;eB&D(G1Fn?@nU~9+iG?XftM0iy*Vh zAp^g%Xdy6@(An!?<$xiT5a7f+vdJG(cRN6qf(V$>)H_dv&xSf|RIZ-8i4S zz72tGfHfo$2!DxIZ>k$s<6dA}V~r=zl}(kp<~T*yGlAfcs7gjI{?lYQ)uu-6jrQ4k zE1xD+-Xzgo-Qp{A*%8<$M}V7wc1y1V?~iJWpythPw{pK{C3w~5{9|^>Es^&-@n$?d z-~or0#ePz-X1^aH$;I~UPO5!dYH^pPYg&?j&)yJvBYLdr=uDApu7%74)A@Jz){+f6Hyno*1oO93bp7Xso@uMF9A&I&;(;xX% zIRBpHf_?+r8}){v{gI%dbMd^gjp8yemHu zXB9u0w~Eyihn-s6Wz%o$2jVZFC8<05gJ`#u$kx@F*MrlOI3~IEKsaK(k~O)_LR_2i zz{P66Gbt1>#B!Nu7>3_u1FF3ulE7}g@~OiT7@tk)14aW2ioE*cg+(&X?zh_YS_$nCox|a42c8F)K#9 zrfs5x@OGyD=#sCDk%g`-HLFEmD4YAVDiUwy3!8u9yAlf_VsAw~sq|kzMK8W}p{h7R zdN$z0QU-WpBA}pS|H}#GZ8HDbR2JV!_zo0k^G)01P>IuC>|+YbsI4DlUDRN*C$(9| zg}KMGr=y0Bl3bMX0A-HwYnFe3F?TgJGRSKC8lwT&ZM3UqTmWcVOCj?_6t=d}7sK}w zcY9u4oqV%@U;X$VSpt2wLElL4fh2k_hbUSb?I<0T_Za?!`k0A=KjQ=AIoO>tU69-N z6;%@i@2F|{{@9_v`fD=`c+XUuQegfa( zUM;ehKaLVyODPMhAFEpZ&V=+4Pu>Qr`OBII`Bo)-WhBkzHuAAg;*xbl`A7@NKJ?y& z#q`cU`^;wZAa}|PnvDtDSo?Qrc%1`L@uOi4%n*P4nES%7t3MH-in(DXF6Nkw8$6x0 z9({hcZlPDYPG475hr>e3cNnXwZFzIr`Ok}&W|mcewfOH%!9{~g&20Kz4ta zvVJ#+scj4m_S##T$qg2@t@P+WOk5eY)Yx*Px-ACvh3LN$k^V+;&uJ?|pMPDLhNuu< z$xP?b^euX{HVgGkG>8_!D%PhxT3R(0pm(J=HXa$pDlN7fNWRx)d}=4U0t5^Vt<*b$h0wmd}OQgNL@cPRk7mDHG<5tUZ} zB9^)?-RqpkV|GG@#itNaA|7=vRR{xgl;)h>`whU`8ML>zjlk!)mbvvT-AAg;@gkM} z@w0`oPEEkbTD+35;In?21;$8n%XqR51og{QhkdQtop}S()hz8oRvi!!Wc_V~C2L;* zwmd292hP0JF#hn%jc2O!z%9^ElIQxMAoJ%cR?WXDS;O1J@1N5kzaInRl(P5;u248J z-?=9Biyg}nnh@yc|5yT7jeHs9$_zH@@x^&1s!j#p$aAl~s>t#>WS6~g{ARD45S)ad81&iMKrF`b`VF-4Lcc3(Er@l|L$*h-gs}Ek&rm>wtpfP z-fEP$2MDj(Uy0n9vF{k~Z7mwK2-<}At_jVJ0ZjVrJe&u13{2mUj7&7=6V#;wBVw13 zow%Z}{bZL@6z3meMugP{=Wry1b`0U;s(RK*z?jQAQ`DV2gbD}QLq831_nz)vLEohQ zU4>46CBIK@uS0GdH6?dlabLgL181T}3K3xEI+X3uaEy7UcsJo9Yd5Y_!;LvANmtk2 z9jDeqv`qNwc%Nwrbo3~qWFFA?t&rW6Y1z<~!k>_Rj}m?e)sQ_^d6JQsUy-4JxeL7O8EK8u6BjgrIy24w-kp=!ZV zH$IQ*Tfp;dhNJphduq-}y{gLUQdeq}hI(%?5ZdfTG?C=9zQn1vz;-(0m=F7qbh-n7 z1AX>g@=X53DqN9aV2Uy!UX${y77fDJTEAcsMUA-ZhNv8&fPW)xvi+lUkIWXkj>5Bn z4|CMgWER{>(qPbI(xz*GMq|4LE@WHUAexj|=bzZz=x|-mxeAdLM0&FS*kSi0C@GAs zg6|>@ypd&S1ZB4gm683f(#iB9Ng9lV`C+^xP|dxz3NI5g3%Uil+2wkPxzgCc%>n^2hCw4TZLW z+>aMW7|9o_ZX9oBaFuY=NOk;KcsPG!4y81y!y*w61V{$(EB32@+lXw2X9F7$bKs zhWAJJHLECEB;aoSRc+VWG3;(W;p;8&n}?0zz?0g}u-{9OQK=bT08gFUY+0EDk9%zQ z=WZPhf>4ZAZH!m$XdxxVGk3JI%tQV#n}>9nvw}G}LsJe`d5ZO`$-(J~nJN2V)n^vj zRO^FPgqn8uqR5!J*|g&8VHH-EOl(hW;6`Ui+Ve|N0+xR3e^+}c-2+J3YHW0wm8H8x zSj99wE56w-4ZsQ+ZJAQ|m%q8cM0wy-H}n{|#;Xjp&2M*1dy@&CpG6e=9Ub=DdC<9N z67x~?H*4VF>apHhab|U6bq9OA(M#z`L*9OtPq(;SSs&fFv^=D!R`io2D|EEKWXSjp zBcVcQpl!iB3q{*h%S6}0_a^??{v0p=BKzemZC-I(=E?d-Ym2}%$q*?qBs!DsGI?1T zW_88GKNfW+z+<_Nv}^(wa2`9O9e*mC7{&^Am?61G@62r%WRX&?Ifug_0c%k(z-@G~ z>)OpRf-U=ANZiEbI(a?K_Bx5!W?El z5mV-JJS(aJx%lqWho?v;FCl_SCrON*yO5vvIe|q?=4j(b;2`yVQ2#n`k-P_dBZE0@@L%_$g%EEl3ZSlFvL8C zS!b@@L+y<26vln<=I+$(ig7mql1X3h2buWZR9Qzo`uKRfDBti71#MZH=TPOxo4ra1 z!L)HUtG2&${4&q>r0(+jCWj*H#bRZXE2@s@>scjh_};m20<|hqb~kLL`BO2_Z|hYJ zs}LeddBDO5r)VKa73;1uol_@G{xG2lMvrVpk7v5I#2MjvJB>DqGb;sCsU66jsXU55 ze(Lx*q`7{{A=Q_Ks&-HpjuzA zkX%-j5SWnT#|e>sy)f{U6H}hY36{RIxFZ#0Z_LQ!i@H3P& z&8f>mqesT-o0r5HpvY-EP@}Yr6nh=UUNj(X*NDVSz8<0HSz?zdFUg*DS7B!_T?D9> zw|kHW<#q5{(c4blvnzP+J<^j)(pv&QrYfx5K*#poJ=ri)--&5Ebbga_c^sRg<1n+m z4J%g2MRwNmSwkhz;d6OGIEE1n!I$I7v38(&y;bgmqob$-rLZgm%h@K)s04iIERrj?H;8hk{37@4%KNVbRB#?y++@6p#d z$K?~MQ|6ZYFe$i+xx|(w8=!tp^>xpJ#odMnAN6qmSm*R>3Fs(pkEAr9-Lm0ZXW}ec z%)U0Fv`Yo$dXGyWQF5mVOA!{{Gx%an+m$ZMaleY`j>w6Oq6lsc^lJxUz_Nb9hBBN)l77o&@Su{C$fRtjIb%>t=HV5Nu}+>*;*I*tNuakkcghz_h$^hIn(yD5cZX?dh-F5*4p=LQryV!$qP?t%GaWJ965zauRI4@Y%MO+oZ~hf6)$2bmCX+x+>y;S!jJwtCu?Ax^mWYF zE;Rq(zJI4v9j{_k8YSasko~{s`zWfU?4BNj{Qo25<$5{Z>S(<%{eRM`o!Pwd7qg!8 VH#WsijjE}}X_%XH)rqTj{tHbT<6{5- literal 0 HcmV?d00001 diff --git a/charts/chart-radar-gcp.png b/charts/chart-radar-gcp.png new file mode 100644 index 0000000000000000000000000000000000000000..d242f06fb8dcc33ec1a5b1ed104bbe231d866089 GIT binary patch literal 105318 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 literal 0 HcmV?d00001 diff --git a/charts/chart-radar-local.png b/charts/chart-radar-local.png new file mode 100644 index 0000000000000000000000000000000000000000..224d31bf73314f5b85a2aa45846d290e2d0681e3 GIT binary patch literal 116396 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

5z54uA_W>0A0XK!qi^X0 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

R9LNh5tpLK7p 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 Ad;kCd literal 0 HcmV?d00001 diff --git a/deploy/tmpl-compute.jinja b/deploy/tmpl-compute.jinja index b8b7a01..124aa6c 100644 --- a/deploy/tmpl-compute.jinja +++ b/deploy/tmpl-compute.jinja @@ -4,22 +4,22 @@ resources: - name: http-server-vm type: tmpl-vm.jinja properties: - machineType: n1-standard-1 + machineType: n1-standard-2 zone: us-central1-f - name: rpc-server-vm type: tmpl-vm.jinja properties: - machineType: n1-standard-1 + machineType: n1-standard-2 zone: us-central1-f - name: http-jmh-vm type: tmpl-vm.jinja properties: - machineType: g1-small + machineType: n1-standard-1 zone: us-central1-f - name: rpc-jmh-vm type: tmpl-vm.jinja properties: - machineType: g1-small + machineType: n1-standard-1 zone: us-central1-f - name: {{ FIREWALL }} type: tmpl-firewall.jinja diff --git a/deploy/tmpl-vm.jinja b/deploy/tmpl-vm.jinja index 83bbe25..7138d4d 100644 --- a/deploy/tmpl-vm.jinja +++ b/deploy/tmpl-vm.jinja @@ -29,9 +29,13 @@ resources: sudo apt-get install -y software-properties-common python-software-properties sudo apt-get update sudo apt install -y -t jessie-backports openjdk-8-jre-headless ca-certificates-java - sudo apt-get install -y openjdk-8-jre + sudo apt-get install -y openjdk-8-jdk sudo apt-get -y install apt-transport-https echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 sudo apt-get update - sudo apt-get install -y sbt=1.0.2 \ No newline at end of file + sudo apt-get install -y sbt=1.0.2 + sudo mkdir -p /metrifier/bench_results + sudo gsutil cp -R gs://metrifier / + sudo git clone https://github.com/47deg/metrifier.git /metrifier/repo && cd /metrifier/repo + sudo chmod -R 777 /metrifier/ diff --git a/project/ProjectPlugin.scala b/project/ProjectPlugin.scala index 28ddfc3..f67ab67 100644 --- a/project/ProjectPlugin.scala +++ b/project/ProjectPlugin.scala @@ -1,10 +1,14 @@ import sbt.Keys._ import sbt._ +import sbtassembly.AssemblyPlugin +import sbtassembly.AssemblyPlugin.autoImport._ object ProjectPlugin extends AutoPlugin { override def trigger: PluginTrigger = allRequirements + override def requires: Plugins = AssemblyPlugin + object autoImport { lazy val V = new { @@ -16,13 +20,12 @@ object ProjectPlugin extends AutoPlugin { lazy val config = "1.3.1" } - lazy val scalaMetaSettings: Seq[Def.Setting[_]] = - Seq( - addCompilerPlugin("org.scalameta" % "paradise" % "3.0.0-M10" cross CrossVersion.full), - libraryDependencies += "org.scalameta" %% "scalameta" % "1.8.0", - scalacOptions += "-Xplugin-require:macroparadise", - scalacOptions in (Compile, console) ~= (_ filterNot (_ contains "paradise")) // macroparadise plugin doesn't work in repl yet. - ) + lazy val scalaMetaSettings: Seq[Def.Setting[_]] = Seq( + addCompilerPlugin("org.scalameta" % "paradise" % "3.0.0-M10" cross CrossVersion.full), + libraryDependencies += "org.scalameta" %% "scalameta" % "1.8.0", + scalacOptions += "-Xplugin-require:macroparadise", + scalacOptions in (Compile, console) ~= (_ filterNot (_ contains "paradise")) // macroparadise plugin doesn't work in repl yet. + ) lazy val httpDependencies: Seq[ModuleID] = Seq( "org.http4s" %% "http4s-dsl" % V.http4sV, @@ -36,9 +39,11 @@ object ProjectPlugin extends AutoPlugin { ) lazy val rpcDependencies: Seq[ModuleID] = Seq( - "io.frees" %% "frees-rpc" % V.freesRPC, - "io.frees" %% "frees-async-cats-effect" % V.frees + "io.frees" %% "frees-rpc" % V.freesRPC exclude ("org.typelevel", "scala-library"), + "io.frees" %% "frees-async-cats-effect" % V.frees exclude ("org.typelevel", "scala-library") ) + + def n(suffix: String) = s"metrifier-$suffix" } override def projectSettings: Seq[Def.Setting[_]] = @@ -50,7 +55,20 @@ object ProjectPlugin extends AutoPlugin { resolvers ++= Seq( Resolver.sonatypeRepo("releases"), Resolver.bintrayRepo("beyondthelines", "maven") - ) + ), + test in assembly := {}, + assemblyOption in assembly := (assemblyOption in assembly).value + .copy(includeScala = false, includeDependency = false), + assemblyMergeStrategy in assembly := { + case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first + case PathList("META-INF", "io.netty.versions.properties") => MergeStrategy.first + case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first + case "application.conf" => MergeStrategy.concat + case "unwanted.txt" => MergeStrategy.discard + case x => + val oldStrategy = (assemblyMergeStrategy in assembly).value + oldStrategy(x) + } ) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 4515443..8aab693 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1 +1,2 @@ -addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.27") +addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.27") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5") diff --git a/results/BENCHMARK_RESULTS_GCP.md b/results/BENCHMARK_RESULTS_GCP.md new file mode 100644 index 0000000..d7198c0 --- /dev/null +++ b/results/BENCHMARK_RESULTS_GCP.md @@ -0,0 +1,1112 @@ +# Benchmark Results + +In this document we are posting all the Benchmarks results when testing atop GCP. For both `HTTP` and `RPC` benchmarks we are implementing two Google Compute Engine instances, one for the server (`n1-standard-2`), another one for the benchmarks (`n1-standard-1`). See [Google Docs - Machine Types](https://cloud.google.com/compute/docs/machine-types) for deeper information. + +See [README](../README.md#running-benchmarks-on-google-cloud-platform) for reference. + +## Server GCE instance Details + +* n1-standard-2. +* 2 virtual CPUs. +* 7.5 GB of memory. + +## Benchmarks GCE instance Details + +* n1-standard-1. +* 1 virtual CPU. +* 3.75 GB of memory. + +## jmh - http + +```bash +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.createPerson + +# Run progress: 0.00% complete, ETA 00:06:40 +# Fork: 1 of 2 +# Warmup Iteration 1: 207.417 ops/s +# Warmup Iteration 2: 186.358 ops/s +# Warmup Iteration 3: 302.855 ops/s +# Warmup Iteration 4: 443.092 ops/s +# Warmup Iteration 5: 546.021 ops/s +# Warmup Iteration 6: 633.398 ops/s +# Warmup Iteration 7: 785.443 ops/s +# Warmup Iteration 8: 973.645 ops/s +# Warmup Iteration 9: 1141.057 ops/s +# Warmup Iteration 10: 1296.869 ops/s +# Warmup Iteration 11: 1375.834 ops/s +# Warmup Iteration 12: 1666.575 ops/s +# Warmup Iteration 13: 2175.982 ops/s +# Warmup Iteration 14: 2445.844 ops/s +# Warmup Iteration 15: 2505.623 ops/s +# Warmup Iteration 16: 2503.850 ops/s +# Warmup Iteration 17: 2681.764 ops/s +# Warmup Iteration 18: 2781.007 ops/s +# Warmup Iteration 19: 2818.946 ops/s +# Warmup Iteration 20: 2810.758 ops/s +Iteration 1: 2749.155 ops/s +Iteration 2: 2699.779 ops/s +Iteration 3: 2691.168 ops/s +Iteration 4: 2776.760 ops/s +Iteration 5: 2809.494 ops/s +Iteration 6: 2858.592 ops/s +Iteration 7: 2658.811 ops/s +Iteration 8: 2530.133 ops/s +Iteration 9: 2533.683 ops/s +Iteration 10: 2739.368 ops/s +Iteration 11: 2867.386 ops/s +Iteration 12: 2903.247 ops/s +Iteration 13: 3004.631 ops/s +Iteration 14: 3099.343 ops/s +Iteration 15: 3109.145 ops/s +Iteration 16: 3206.218 ops/s +Iteration 17: 3108.530 ops/s +Iteration 18: 3076.463 ops/s +Iteration 19: 3036.962 ops/s +Iteration 20: 3339.009 ops/s + +# Run progress: 10.00% complete, ETA 00:06:26 +# Fork: 2 of 2 +# Warmup Iteration 1: 199.266 ops/s +# Warmup Iteration 2: 165.233 ops/s +# Warmup Iteration 3: 213.898 ops/s +# Warmup Iteration 4: 347.189 ops/s +# Warmup Iteration 5: 495.497 ops/s +# Warmup Iteration 6: 629.265 ops/s +# Warmup Iteration 7: 725.562 ops/s +# Warmup Iteration 8: 742.223 ops/s +# Warmup Iteration 9: 917.979 ops/s +# Warmup Iteration 10: 1125.339 ops/s +# Warmup Iteration 11: 1251.111 ops/s +# Warmup Iteration 12: 1506.570 ops/s +# Warmup Iteration 13: 1973.252 ops/s +# Warmup Iteration 14: 2381.861 ops/s +# Warmup Iteration 15: 2506.291 ops/s +# Warmup Iteration 16: 2532.515 ops/s +# Warmup Iteration 17: 2441.447 ops/s +# Warmup Iteration 18: 2555.201 ops/s +# Warmup Iteration 19: 2723.734 ops/s +# Warmup Iteration 20: 2670.033 ops/s +Iteration 1: 2606.315 ops/s +Iteration 2: 2619.805 ops/s +Iteration 3: 2760.983 ops/s +Iteration 4: 2822.594 ops/s +Iteration 5: 2699.151 ops/s +Iteration 6: 2784.638 ops/s +Iteration 7: 2850.590 ops/s +Iteration 8: 2889.452 ops/s +Iteration 9: 2840.812 ops/s +Iteration 10: 2576.401 ops/s +Iteration 11: 2495.202 ops/s +Iteration 12: 2394.729 ops/s +Iteration 13: 2314.788 ops/s +Iteration 14: 2616.963 ops/s +Iteration 15: 2655.768 ops/s +Iteration 16: 2535.461 ops/s +Iteration 17: 2651.889 ops/s +Iteration 18: 2817.344 ops/s +Iteration 19: 2926.698 ops/s +Iteration 20: 3026.725 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.createPerson": + 2792.105 ±(99.9%) 126.448 ops/s [Average] + (min, avg, max) = (2314.788, 2792.105, 3339.009), stdev = 224.761 + CI (99.9%): [2665.657, 2918.553] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.getPerson + +# Run progress: 20.00% complete, ETA 00:05:43 +# Fork: 1 of 2 +# Warmup Iteration 1: 251.491 ops/s +# Warmup Iteration 2: 242.862 ops/s +# Warmup Iteration 3: 370.711 ops/s +# Warmup Iteration 4: 512.589 ops/s +# Warmup Iteration 5: 691.188 ops/s +# Warmup Iteration 6: 865.032 ops/s +# Warmup Iteration 7: 967.559 ops/s +# Warmup Iteration 8: 1226.948 ops/s +# Warmup Iteration 9: 1350.093 ops/s +# Warmup Iteration 10: 1521.818 ops/s +# Warmup Iteration 11: 1852.572 ops/s +# Warmup Iteration 12: 2488.928 ops/s +# Warmup Iteration 13: 2748.382 ops/s +# Warmup Iteration 14: 2881.627 ops/s +# Warmup Iteration 15: 2922.065 ops/s +# Warmup Iteration 16: 2963.749 ops/s +# Warmup Iteration 17: 2863.804 ops/s +# Warmup Iteration 18: 2970.396 ops/s +# Warmup Iteration 19: 2980.108 ops/s +# Warmup Iteration 20: 2988.934 ops/s +Iteration 1: 2891.124 ops/s +Iteration 2: 2885.114 ops/s +Iteration 3: 2942.728 ops/s +Iteration 4: 3038.966 ops/s +Iteration 5: 3382.998 ops/s +Iteration 6: 3538.554 ops/s +Iteration 7: 3545.281 ops/s +Iteration 8: 2922.614 ops/s +Iteration 9: 2676.054 ops/s +Iteration 10: 2500.308 ops/s +Iteration 11: 2594.713 ops/s +Iteration 12: 2719.415 ops/s +Iteration 13: 2805.391 ops/s +Iteration 14: 2821.230 ops/s +Iteration 15: 2878.139 ops/s +Iteration 16: 3000.069 ops/s +Iteration 17: 3002.068 ops/s +Iteration 18: 2991.240 ops/s +Iteration 19: 3068.379 ops/s +Iteration 20: 3011.136 ops/s + +# Run progress: 30.00% complete, ETA 00:05:00 +# Fork: 2 of 2 +# Warmup Iteration 1: 134.779 ops/s +# Warmup Iteration 2: 177.200 ops/s +# Warmup Iteration 3: 232.370 ops/s +# Warmup Iteration 4: 333.055 ops/s +# Warmup Iteration 5: 510.997 ops/s +# Warmup Iteration 6: 698.972 ops/s +# Warmup Iteration 7: 867.302 ops/s +# Warmup Iteration 8: 1014.209 ops/s +# Warmup Iteration 9: 1236.638 ops/s +# Warmup Iteration 10: 1385.037 ops/s +# Warmup Iteration 11: 1623.084 ops/s +# Warmup Iteration 12: 1933.535 ops/s +# Warmup Iteration 13: 2565.935 ops/s +# Warmup Iteration 14: 2856.292 ops/s +# Warmup Iteration 15: 2849.774 ops/s +# Warmup Iteration 16: 2710.445 ops/s +# Warmup Iteration 17: 2902.701 ops/s +# Warmup Iteration 18: 2913.802 ops/s +# Warmup Iteration 19: 2917.902 ops/s +# Warmup Iteration 20: 3000.307 ops/s +Iteration 1: 3179.349 ops/s +Iteration 2: 2897.079 ops/s +Iteration 3: 3075.246 ops/s +Iteration 4: 3142.929 ops/s +Iteration 5: 2648.396 ops/s +Iteration 6: 2535.791 ops/s +Iteration 7: 2536.739 ops/s +Iteration 8: 2562.958 ops/s +Iteration 9: 2799.156 ops/s +Iteration 10: 2854.953 ops/s +Iteration 11: 2929.159 ops/s +Iteration 12: 2950.526 ops/s +Iteration 13: 3022.615 ops/s +Iteration 14: 2998.762 ops/s +Iteration 15: 3163.491 ops/s +Iteration 16: 3035.430 ops/s +Iteration 17: 3162.001 ops/s +Iteration 18: 3162.041 ops/s +Iteration 19: 3147.395 ops/s +Iteration 20: 3191.959 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.getPerson": + 2955.287 ±(99.9%) 139.535 ops/s [Average] + (min, avg, max) = (2500.308, 2955.287, 3545.281), stdev = 248.023 + CI (99.9%): [2815.752, 3094.822] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.getPersonLinks + +# Run progress: 40.00% complete, ETA 00:04:18 +# Fork: 1 of 2 +# Warmup Iteration 1: 72.257 ops/s +# Warmup Iteration 2: 187.787 ops/s +# Warmup Iteration 3: 306.683 ops/s +# Warmup Iteration 4: 373.088 ops/s +# Warmup Iteration 5: 449.815 ops/s +# Warmup Iteration 6: 530.422 ops/s +# Warmup Iteration 7: 643.349 ops/s +# Warmup Iteration 8: 780.170 ops/s +# Warmup Iteration 9: 857.579 ops/s +# Warmup Iteration 10: 981.189 ops/s +# Warmup Iteration 11: 1132.683 ops/s +# Warmup Iteration 12: 1287.771 ops/s +# Warmup Iteration 13: 1642.678 ops/s +# Warmup Iteration 14: 1823.253 ops/s +# Warmup Iteration 15: 1835.391 ops/s +# Warmup Iteration 16: 1783.120 ops/s +# Warmup Iteration 17: 1777.513 ops/s +# Warmup Iteration 18: 1762.985 ops/s +# Warmup Iteration 19: 1767.775 ops/s +# Warmup Iteration 20: 1818.050 ops/s +Iteration 1: 1846.207 ops/s +Iteration 2: 1911.200 ops/s +Iteration 3: 1865.668 ops/s +Iteration 4: 1846.852 ops/s +Iteration 5: 1866.649 ops/s +Iteration 6: 1945.068 ops/s +Iteration 7: 1925.984 ops/s +Iteration 8: 2029.254 ops/s +Iteration 9: 1970.475 ops/s +Iteration 10: 2050.704 ops/s +Iteration 11: 2085.215 ops/s +Iteration 12: 1984.012 ops/s +Iteration 13: 1952.381 ops/s +Iteration 14: 1667.926 ops/s +Iteration 15: 1476.175 ops/s +Iteration 16: 1849.435 ops/s +Iteration 17: 1940.450 ops/s +Iteration 18: 1977.672 ops/s +Iteration 19: 2015.465 ops/s +Iteration 20: 1989.809 ops/s + +# Run progress: 50.00% complete, ETA 00:03:35 +# Fork: 2 of 2 +# Warmup Iteration 1: 63.795 ops/s +# Warmup Iteration 2: 193.120 ops/s +# Warmup Iteration 3: 273.333 ops/s +# Warmup Iteration 4: 343.967 ops/s +# Warmup Iteration 5: 462.359 ops/s +# Warmup Iteration 6: 550.436 ops/s +# Warmup Iteration 7: 686.816 ops/s +# Warmup Iteration 8: 769.969 ops/s +# Warmup Iteration 9: 810.574 ops/s +# Warmup Iteration 10: 956.948 ops/s +# Warmup Iteration 11: 1101.655 ops/s +# Warmup Iteration 12: 1298.221 ops/s +# Warmup Iteration 13: 1620.797 ops/s +# Warmup Iteration 14: 1808.480 ops/s +# Warmup Iteration 15: 1889.880 ops/s +# Warmup Iteration 16: 1822.300 ops/s +# Warmup Iteration 17: 1944.136 ops/s +# Warmup Iteration 18: 1999.727 ops/s +# Warmup Iteration 19: 2031.759 ops/s +# Warmup Iteration 20: 1813.886 ops/s +Iteration 1: 1694.740 ops/s +Iteration 2: 1996.393 ops/s +Iteration 3: 2103.072 ops/s +Iteration 4: 2158.161 ops/s +Iteration 5: 2345.351 ops/s +Iteration 6: 2385.057 ops/s +Iteration 7: 2352.652 ops/s +Iteration 8: 2510.802 ops/s +Iteration 9: 2620.736 ops/s +Iteration 10: 2031.601 ops/s +Iteration 11: 1958.162 ops/s +Iteration 12: 1802.850 ops/s +Iteration 13: 1902.572 ops/s +Iteration 14: 2143.527 ops/s +Iteration 15: 2140.263 ops/s +Iteration 16: 2190.858 ops/s +Iteration 17: 2265.859 ops/s +Iteration 18: 2167.498 ops/s +Iteration 19: 2091.492 ops/s +Iteration 20: 2102.990 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.getPersonLinks": + 2029.031 ±(99.9%) 124.303 ops/s [Average] + (min, avg, max) = (1476.175, 2029.031, 2620.736), stdev = 220.948 + CI (99.9%): [1904.728, 2153.334] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.listPersons + +# Run progress: 60.00% complete, ETA 00:02:52 +# Fork: 1 of 2 +# Warmup Iteration 1: 67.010 ops/s +# Warmup Iteration 2: 174.704 ops/s +# Warmup Iteration 3: 276.320 ops/s +# Warmup Iteration 4: 248.926 ops/s +# Warmup Iteration 5: 260.908 ops/s +# Warmup Iteration 6: 358.674 ops/s +# Warmup Iteration 7: 560.062 ops/s +# Warmup Iteration 8: 831.663 ops/s +# Warmup Iteration 9: 981.983 ops/s +# Warmup Iteration 10: 1115.941 ops/s +# Warmup Iteration 11: 1275.455 ops/s +# Warmup Iteration 12: 1546.280 ops/s +# Warmup Iteration 13: 2118.285 ops/s +# Warmup Iteration 14: 2228.635 ops/s +# Warmup Iteration 15: 2095.981 ops/s +# Warmup Iteration 16: 2025.514 ops/s +# Warmup Iteration 17: 2066.409 ops/s +# Warmup Iteration 18: 2059.842 ops/s +# Warmup Iteration 19: 2263.949 ops/s +# Warmup Iteration 20: 2323.044 ops/s +Iteration 1: 2315.306 ops/s +Iteration 2: 2372.821 ops/s +Iteration 3: 2451.169 ops/s +Iteration 4: 2443.041 ops/s +Iteration 5: 2591.791 ops/s +Iteration 6: 2635.479 ops/s +Iteration 7: 2507.780 ops/s +Iteration 8: 2568.076 ops/s +Iteration 9: 2319.052 ops/s +Iteration 10: 2206.349 ops/s +Iteration 11: 2168.047 ops/s +Iteration 12: 2038.723 ops/s +Iteration 13: 2644.578 ops/s +Iteration 14: 2273.844 ops/s +Iteration 15: 2113.829 ops/s +Iteration 16: 2241.506 ops/s +Iteration 17: 2491.382 ops/s +Iteration 18: 2745.525 ops/s +Iteration 19: 2910.517 ops/s +Iteration 20: 3088.449 ops/s + +# Run progress: 70.00% complete, ETA 00:02:09 +# Fork: 2 of 2 +# Warmup Iteration 1: 81.431 ops/s +# Warmup Iteration 2: 161.699 ops/s +# Warmup Iteration 3: 289.607 ops/s +# Warmup Iteration 4: 388.418 ops/s +# Warmup Iteration 5: 484.931 ops/s +# Warmup Iteration 6: 583.942 ops/s +# Warmup Iteration 7: 705.020 ops/s +# Warmup Iteration 8: 836.121 ops/s +# Warmup Iteration 9: 951.576 ops/s +# Warmup Iteration 10: 1131.283 ops/s +# Warmup Iteration 11: 1324.893 ops/s +# Warmup Iteration 12: 1547.504 ops/s +# Warmup Iteration 13: 2226.794 ops/s +# Warmup Iteration 14: 965.875 ops/s +# Warmup Iteration 15: 2169.253 ops/s +# Warmup Iteration 16: 2271.277 ops/s +# Warmup Iteration 17: 2249.274 ops/s +# Warmup Iteration 18: 2311.945 ops/s +# Warmup Iteration 19: 2498.126 ops/s +# Warmup Iteration 20: 2375.087 ops/s +Iteration 1: 2444.321 ops/s +Iteration 2: 2482.593 ops/s +Iteration 3: 2554.264 ops/s +Iteration 4: 2472.026 ops/s +Iteration 5: 2306.818 ops/s +Iteration 6: 2281.248 ops/s +Iteration 7: 2404.454 ops/s +Iteration 8: 2434.556 ops/s +Iteration 9: 2468.710 ops/s +Iteration 10: 2616.196 ops/s +Iteration 11: 2689.048 ops/s +Iteration 12: 2765.543 ops/s +Iteration 13: 2610.334 ops/s +Iteration 14: 2711.426 ops/s +Iteration 15: 3072.968 ops/s +Iteration 16: 3094.431 ops/s +Iteration 17: 3182.954 ops/s +Iteration 18: 3076.521 ops/s +Iteration 19: 2941.313 ops/s +Iteration 20: 3058.505 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.listPersons": + 2569.887 ±(99.9%) 167.753 ops/s [Average] + (min, avg, max) = (2038.723, 2569.887, 3182.954), stdev = 298.181 + CI (99.9%): [2402.134, 2737.640] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.programComposition + +# Run progress: 80.00% complete, ETA 00:01:26 +# Fork: 1 of 2 +# Warmup Iteration 1: 14.146 ops/s +# Warmup Iteration 2: 27.553 ops/s +# Warmup Iteration 3: 42.543 ops/s +# Warmup Iteration 4: 56.664 ops/s +# Warmup Iteration 5: 66.442 ops/s +# Warmup Iteration 6: 86.754 ops/s +# Warmup Iteration 7: 106.862 ops/s +# Warmup Iteration 8: 124.021 ops/s +# Warmup Iteration 9: 160.412 ops/s +# Warmup Iteration 10: 177.658 ops/s +# Warmup Iteration 11: 227.573 ops/s +# Warmup Iteration 12: 241.472 ops/s +# Warmup Iteration 13: 255.342 ops/s +# Warmup Iteration 14: 279.899 ops/s +# Warmup Iteration 15: 284.623 ops/s +# Warmup Iteration 16: 277.613 ops/s +# Warmup Iteration 17: 291.816 ops/s +# Warmup Iteration 18: 288.883 ops/s +# Warmup Iteration 19: 316.511 ops/s +# Warmup Iteration 20: 313.775 ops/s +Iteration 1: 318.192 ops/s +Iteration 2: 321.236 ops/s +Iteration 3: 328.797 ops/s +Iteration 4: 322.498 ops/s +Iteration 5: 293.920 ops/s +Iteration 6: 224.140 ops/s +Iteration 7: 267.718 ops/s +Iteration 8: 284.626 ops/s +Iteration 9: 300.192 ops/s +Iteration 10: 240.156 ops/s +Iteration 11: 358.810 ops/s +Iteration 12: 379.619 ops/s +Iteration 13: 370.529 ops/s +Iteration 14: 322.367 ops/s +Iteration 15: 305.703 ops/s +Iteration 16: 283.629 ops/s +Iteration 17: 317.722 ops/s +Iteration 18: 327.170 ops/s +Iteration 19: 334.122 ops/s +Iteration 20: 341.514 ops/s + +# Run progress: 90.00% complete, ETA 00:00:43 +# Fork: 2 of 2 +# Warmup Iteration 1: 16.297 ops/s +# Warmup Iteration 2: 35.024 ops/s +# Warmup Iteration 3: 53.472 ops/s +# Warmup Iteration 4: 78.229 ops/s +# Warmup Iteration 5: 91.610 ops/s +# Warmup Iteration 6: 107.437 ops/s +# Warmup Iteration 7: 118.140 ops/s +# Warmup Iteration 8: 140.898 ops/s +# Warmup Iteration 9: 171.474 ops/s +# Warmup Iteration 10: 204.816 ops/s +# Warmup Iteration 11: 256.570 ops/s +# Warmup Iteration 12: 282.323 ops/s +# Warmup Iteration 13: 264.483 ops/s +# Warmup Iteration 14: 263.261 ops/s +# Warmup Iteration 15: 282.622 ops/s +# Warmup Iteration 16: 294.507 ops/s +# Warmup Iteration 17: 282.506 ops/s +# Warmup Iteration 18: 245.536 ops/s +# Warmup Iteration 19: 292.204 ops/s +# Warmup Iteration 20: 305.538 ops/s +Iteration 1: 310.959 ops/s +Iteration 2: 293.970 ops/s +Iteration 3: 273.896 ops/s +Iteration 4: 270.189 ops/s +Iteration 5: 302.226 ops/s +Iteration 6: 293.525 ops/s +Iteration 7: 302.581 ops/s +Iteration 8: 309.587 ops/s +Iteration 9: 309.355 ops/s +Iteration 10: 314.560 ops/s +Iteration 11: 331.926 ops/s +Iteration 12: 336.997 ops/s +Iteration 13: 343.393 ops/s +Iteration 14: 364.163 ops/s +Iteration 15: 355.510 ops/s +Iteration 16: 364.065 ops/s +Iteration 17: 359.526 ops/s +Iteration 18: 367.662 ops/s +Iteration 19: 384.648 ops/s +Iteration 20: 310.723 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.programComposition": + 318.553 ±(99.9%) 20.476 ops/s [Average] + (min, avg, max) = (224.140, 318.553, 384.648), stdev = 36.395 + CI (99.9%): [298.077, 339.029] (assumes normal distribution) + + +# Run complete. Total time: 00:07:13 + +Benchmark Mode Cnt Score Error Units +HttpBenchmark.createPerson thrpt 40 2792.105 ± 126.448 ops/s +HttpBenchmark.getPerson thrpt 40 2955.287 ± 139.535 ops/s +HttpBenchmark.getPersonLinks thrpt 40 2029.031 ± 124.303 ops/s +HttpBenchmark.listPersons thrpt 40 2569.887 ± 167.753 ops/s +HttpBenchmark.programComposition thrpt 40 318.553 ± 20.476 ops/s +``` + +## jmh - frees-rpc + +```bash +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.createPerson + +# Run progress: 0.00% complete, ETA 00:06:40 +# Fork: 1 of 2 +# Warmup Iteration 1: 316.267 ops/s +# Warmup Iteration 2: 707.845 ops/s +# Warmup Iteration 3: 1066.569 ops/s +# Warmup Iteration 4: 2708.793 ops/s +# Warmup Iteration 5: 3586.490 ops/s +# Warmup Iteration 6: 3280.578 ops/s +# Warmup Iteration 7: 4055.175 ops/s +# Warmup Iteration 8: 4364.817 ops/s +# Warmup Iteration 9: 4847.896 ops/s +# Warmup Iteration 10: 5016.011 ops/s +# Warmup Iteration 11: 5642.445 ops/s +# Warmup Iteration 12: 5235.212 ops/s +# Warmup Iteration 13: 6075.992 ops/s +# Warmup Iteration 14: 7344.079 ops/s +# Warmup Iteration 15: 7310.041 ops/s +# Warmup Iteration 16: 7632.229 ops/s +# Warmup Iteration 17: 8844.580 ops/s +# Warmup Iteration 18: 9243.115 ops/s +# Warmup Iteration 19: 10927.067 ops/s +# Warmup Iteration 20: 7229.944 ops/s +Iteration 1: 10176.456 ops/s +Iteration 2: 10580.462 ops/s +Iteration 3: 10167.197 ops/s +Iteration 4: 8215.955 ops/s +Iteration 5: 9789.917 ops/s +Iteration 6: 10648.954 ops/s +Iteration 7: 10194.194 ops/s +Iteration 8: 9929.418 ops/s +Iteration 9: 10639.510 ops/s +Iteration 10: 11104.409 ops/s +Iteration 11: 10017.442 ops/s +Iteration 12: 10425.024 ops/s +Iteration 13: 9376.907 ops/s +Iteration 14: 9216.349 ops/s +Iteration 15: 9743.006 ops/s +Iteration 16: 10184.890 ops/s +Iteration 17: 9907.627 ops/s +Iteration 18: 10637.528 ops/s +Iteration 19: 9562.105 ops/s +Iteration 20: 10203.845 ops/s + +# Run progress: 10.00% complete, ETA 00:06:25 +# Fork: 2 of 2 +# Warmup Iteration 1: 291.380 ops/s +# Warmup Iteration 2: 701.978 ops/s +# Warmup Iteration 3: 1079.226 ops/s +# Warmup Iteration 4: 2937.238 ops/s +# Warmup Iteration 5: 3765.212 ops/s +# Warmup Iteration 6: 4562.024 ops/s +# Warmup Iteration 7: 5251.147 ops/s +# Warmup Iteration 8: 5184.398 ops/s +# Warmup Iteration 9: 4139.979 ops/s +# Warmup Iteration 10: 5997.121 ops/s +# Warmup Iteration 11: 6708.965 ops/s +# Warmup Iteration 12: 6931.148 ops/s +# Warmup Iteration 13: 6182.989 ops/s +# Warmup Iteration 14: 8325.981 ops/s +# Warmup Iteration 15: 11449.653 ops/s +# Warmup Iteration 16: 12066.850 ops/s +# Warmup Iteration 17: 11671.011 ops/s +# Warmup Iteration 18: 12213.315 ops/s +# Warmup Iteration 19: 12264.959 ops/s +# Warmup Iteration 20: 11563.442 ops/s +Iteration 1: 11987.634 ops/s +Iteration 2: 12620.547 ops/s +Iteration 3: 12047.990 ops/s +Iteration 4: 12272.154 ops/s +Iteration 5: 12304.629 ops/s +Iteration 6: 8848.174 ops/s +Iteration 7: 10613.202 ops/s +Iteration 8: 11503.797 ops/s +Iteration 9: 11330.698 ops/s +Iteration 10: 8577.173 ops/s +Iteration 11: 11172.583 ops/s +Iteration 12: 11871.256 ops/s +Iteration 13: 12756.838 ops/s +Iteration 14: 11183.636 ops/s +Iteration 15: 11608.603 ops/s +Iteration 16: 11098.820 ops/s +Iteration 17: 12197.607 ops/s +Iteration 18: 8704.813 ops/s +Iteration 19: 11284.609 ops/s +Iteration 20: 10800.940 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.createPerson": + 10637.672 ±(99.9%) 643.970 ops/s [Average] + (min, avg, max) = (8215.955, 10637.672, 12756.838), stdev = 1144.656 + CI (99.9%): [9993.703, 11281.642] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.getPerson + +# Run progress: 20.00% complete, ETA 00:05:42 +# Fork: 1 of 2 +# Warmup Iteration 1: 364.693 ops/s +# Warmup Iteration 2: 869.480 ops/s +# Warmup Iteration 3: 1520.539 ops/s +# Warmup Iteration 4: 3760.924 ops/s +# Warmup Iteration 5: 4364.898 ops/s +# Warmup Iteration 6: 4530.152 ops/s +# Warmup Iteration 7: 4813.475 ops/s +# Warmup Iteration 8: 5492.720 ops/s +# Warmup Iteration 9: 5611.181 ops/s +# Warmup Iteration 10: 6421.114 ops/s +# Warmup Iteration 11: 7443.260 ops/s +# Warmup Iteration 12: 9369.463 ops/s +# Warmup Iteration 13: 10726.548 ops/s +# Warmup Iteration 14: 11060.475 ops/s +# Warmup Iteration 15: 12412.419 ops/s +# Warmup Iteration 16: 12705.857 ops/s +# Warmup Iteration 17: 12691.669 ops/s +# Warmup Iteration 18: 12921.484 ops/s +# Warmup Iteration 19: 13424.700 ops/s +# Warmup Iteration 20: 14105.943 ops/s +Iteration 1: 13319.632 ops/s +Iteration 2: 13602.496 ops/s +Iteration 3: 13189.547 ops/s +Iteration 4: 13159.999 ops/s +Iteration 5: 12009.480 ops/s +Iteration 6: 14728.310 ops/s +Iteration 7: 13589.989 ops/s +Iteration 8: 12923.319 ops/s +Iteration 9: 12902.201 ops/s +Iteration 10: 13602.309 ops/s +Iteration 11: 14687.507 ops/s +Iteration 12: 13972.061 ops/s +Iteration 13: 14090.610 ops/s +Iteration 14: 13408.315 ops/s +Iteration 15: 12528.103 ops/s +Iteration 16: 13793.138 ops/s +Iteration 17: 10788.639 ops/s +Iteration 18: 10797.279 ops/s +Iteration 19: 13810.363 ops/s +Iteration 20: 12610.460 ops/s + +# Run progress: 30.00% complete, ETA 00:04:59 +# Fork: 2 of 2 +# Warmup Iteration 1: 382.627 ops/s +# Warmup Iteration 2: 828.114 ops/s +# Warmup Iteration 3: 1323.947 ops/s +# Warmup Iteration 4: 2963.150 ops/s +# Warmup Iteration 5: 4000.558 ops/s +# Warmup Iteration 6: 4409.404 ops/s +# Warmup Iteration 7: 4916.893 ops/s +# Warmup Iteration 8: 5813.581 ops/s +# Warmup Iteration 9: 6307.596 ops/s +# Warmup Iteration 10: 6508.735 ops/s +# Warmup Iteration 11: 7145.920 ops/s +# Warmup Iteration 12: 8626.569 ops/s +# Warmup Iteration 13: 9889.634 ops/s +# Warmup Iteration 14: 10251.562 ops/s +# Warmup Iteration 15: 11539.188 ops/s +# Warmup Iteration 16: 12846.134 ops/s +# Warmup Iteration 17: 12963.164 ops/s +# Warmup Iteration 18: 12772.475 ops/s +# Warmup Iteration 19: 13897.269 ops/s +# Warmup Iteration 20: 12205.197 ops/s +Iteration 1: 13471.839 ops/s +Iteration 2: 13164.617 ops/s +Iteration 3: 13926.040 ops/s +Iteration 4: 13784.740 ops/s +Iteration 5: 13713.468 ops/s +Iteration 6: 13141.173 ops/s +Iteration 7: 13516.471 ops/s +Iteration 8: 13381.265 ops/s +Iteration 9: 13292.449 ops/s +Iteration 10: 14553.288 ops/s +Iteration 11: 14810.263 ops/s +Iteration 12: 14739.413 ops/s +Iteration 13: 14079.264 ops/s +Iteration 14: 14031.597 ops/s +Iteration 15: 15151.985 ops/s +Iteration 16: 14997.509 ops/s +Iteration 17: 13627.607 ops/s +Iteration 18: 14279.853 ops/s +Iteration 19: 14117.225 ops/s +Iteration 20: 13903.345 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.getPerson": + 13579.929 ±(99.9%) 530.903 ops/s [Average] + (min, avg, max) = (10788.639, 13579.929, 15151.985), stdev = 943.680 + CI (99.9%): [13049.026, 14110.832] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.getPersonLinks + +# Run progress: 40.00% complete, ETA 00:04:16 +# Fork: 1 of 2 +# Warmup Iteration 1: 299.172 ops/s +# Warmup Iteration 2: 749.110 ops/s +# Warmup Iteration 3: 831.894 ops/s +# Warmup Iteration 4: 1607.190 ops/s +# Warmup Iteration 5: 2662.090 ops/s +# Warmup Iteration 6: 2817.520 ops/s +# Warmup Iteration 7: 3203.611 ops/s +# Warmup Iteration 8: 3414.660 ops/s +# Warmup Iteration 9: 3678.767 ops/s +# Warmup Iteration 10: 3499.467 ops/s +# Warmup Iteration 11: 3722.000 ops/s +# Warmup Iteration 12: 3854.748 ops/s +# Warmup Iteration 13: 4024.336 ops/s +# Warmup Iteration 14: 4369.229 ops/s +# Warmup Iteration 15: 4429.275 ops/s +# Warmup Iteration 16: 4405.839 ops/s +# Warmup Iteration 17: 4843.653 ops/s +# Warmup Iteration 18: 4438.496 ops/s +# Warmup Iteration 19: 4017.054 ops/s +# Warmup Iteration 20: 3917.394 ops/s +Iteration 1: 4271.215 ops/s +Iteration 2: 4835.040 ops/s +Iteration 3: 5501.124 ops/s +Iteration 4: 5829.104 ops/s +Iteration 5: 5670.235 ops/s +Iteration 6: 5310.635 ops/s +Iteration 7: 5064.047 ops/s +Iteration 8: 5530.431 ops/s +Iteration 9: 5182.496 ops/s +Iteration 10: 5365.478 ops/s +Iteration 11: 5369.666 ops/s +Iteration 12: 5589.760 ops/s +Iteration 13: 5987.990 ops/s +Iteration 14: 5672.871 ops/s +Iteration 15: 5624.459 ops/s +Iteration 16: 5739.820 ops/s +Iteration 17: 6156.031 ops/s +Iteration 18: 6121.846 ops/s +Iteration 19: 5939.040 ops/s +Iteration 20: 5800.578 ops/s + +# Run progress: 50.00% complete, ETA 00:03:33 +# Fork: 2 of 2 +# Warmup Iteration 1: 309.971 ops/s +# Warmup Iteration 2: 662.297 ops/s +# Warmup Iteration 3: 880.574 ops/s +# Warmup Iteration 4: 1894.943 ops/s +# Warmup Iteration 5: 2651.741 ops/s +# Warmup Iteration 6: 2774.041 ops/s +# Warmup Iteration 7: 3180.594 ops/s +# Warmup Iteration 8: 2891.455 ops/s +# Warmup Iteration 9: 2858.367 ops/s +# Warmup Iteration 10: 3254.989 ops/s +# Warmup Iteration 11: 3441.565 ops/s +# Warmup Iteration 12: 3521.124 ops/s +# Warmup Iteration 13: 2828.499 ops/s +# Warmup Iteration 14: 3810.936 ops/s +# Warmup Iteration 15: 3934.375 ops/s +# Warmup Iteration 16: 4209.278 ops/s +# Warmup Iteration 17: 4292.916 ops/s +# Warmup Iteration 18: 4398.596 ops/s +# Warmup Iteration 19: 4479.551 ops/s +# Warmup Iteration 20: 4580.994 ops/s +Iteration 1: 4163.968 ops/s +Iteration 2: 4816.583 ops/s +Iteration 3: 4869.443 ops/s +Iteration 4: 5698.505 ops/s +Iteration 5: 5521.810 ops/s +Iteration 6: 5831.237 ops/s +Iteration 7: 4634.150 ops/s +Iteration 8: 5587.762 ops/s +Iteration 9: 5817.931 ops/s +Iteration 10: 5671.812 ops/s +Iteration 11: 5962.717 ops/s +Iteration 12: 5490.390 ops/s +Iteration 13: 5581.050 ops/s +Iteration 14: 6061.845 ops/s +Iteration 15: 5360.896 ops/s +Iteration 16: 5329.537 ops/s +Iteration 17: 5209.616 ops/s +Iteration 18: 4267.732 ops/s +Iteration 19: 4705.953 ops/s +Iteration 20: 4600.172 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.getPersonLinks": + 5393.624 ±(99.9%) 295.557 ops/s [Average] + (min, avg, max) = (4163.968, 5393.624, 6156.031), stdev = 525.353 + CI (99.9%): [5098.067, 5689.182] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.listPersons + +# Run progress: 60.00% complete, ETA 00:02:50 +# Fork: 1 of 2 +# Warmup Iteration 1: 298.650 ops/s +# Warmup Iteration 2: 652.769 ops/s +# Warmup Iteration 3: 808.432 ops/s +# Warmup Iteration 4: 1298.555 ops/s +# Warmup Iteration 5: 2508.496 ops/s +# Warmup Iteration 6: 2703.070 ops/s +# Warmup Iteration 7: 3162.103 ops/s +# Warmup Iteration 8: 3352.231 ops/s +# Warmup Iteration 9: 3680.561 ops/s +# Warmup Iteration 10: 3779.706 ops/s +# Warmup Iteration 11: 3748.379 ops/s +# Warmup Iteration 12: 3889.403 ops/s +# Warmup Iteration 13: 4014.514 ops/s +# Warmup Iteration 14: 4573.539 ops/s +# Warmup Iteration 15: 4141.645 ops/s +# Warmup Iteration 16: 3162.612 ops/s +# Warmup Iteration 17: 4413.848 ops/s +# Warmup Iteration 18: 5168.209 ops/s +# Warmup Iteration 19: 5704.541 ops/s +# Warmup Iteration 20: 5352.833 ops/s +Iteration 1: 5515.650 ops/s +Iteration 2: 5991.717 ops/s +Iteration 3: 6211.210 ops/s +Iteration 4: 6320.765 ops/s +Iteration 5: 6541.176 ops/s +Iteration 6: 7440.258 ops/s +Iteration 7: 7272.276 ops/s +Iteration 8: 8065.855 ops/s +Iteration 9: 7921.190 ops/s +Iteration 10: 8254.497 ops/s +Iteration 11: 8132.099 ops/s +Iteration 12: 7642.953 ops/s +Iteration 13: 7881.541 ops/s +Iteration 14: 7696.943 ops/s +Iteration 15: 7691.757 ops/s +Iteration 16: 7643.671 ops/s +Iteration 17: 7634.476 ops/s +Iteration 18: 7883.445 ops/s +Iteration 19: 7723.555 ops/s +Iteration 20: 7809.725 ops/s + +# Run progress: 70.00% complete, ETA 00:02:08 +# Fork: 2 of 2 +# Warmup Iteration 1: 301.037 ops/s +# Warmup Iteration 2: 755.808 ops/s +# Warmup Iteration 3: 995.379 ops/s +# Warmup Iteration 4: 2161.404 ops/s +# Warmup Iteration 5: 3104.273 ops/s +# Warmup Iteration 6: 3380.012 ops/s +# Warmup Iteration 7: 3652.046 ops/s +# Warmup Iteration 8: 3896.099 ops/s +# Warmup Iteration 9: 4202.783 ops/s +# Warmup Iteration 10: 4307.672 ops/s +# Warmup Iteration 11: 4624.487 ops/s +# Warmup Iteration 12: 4848.911 ops/s +# Warmup Iteration 13: 5481.540 ops/s +# Warmup Iteration 14: 5654.013 ops/s +# Warmup Iteration 15: 6225.821 ops/s +# Warmup Iteration 16: 6914.574 ops/s +# Warmup Iteration 17: 6914.017 ops/s +# Warmup Iteration 18: 8398.100 ops/s +# Warmup Iteration 19: 8101.725 ops/s +# Warmup Iteration 20: 8550.849 ops/s +Iteration 1: 9236.542 ops/s +Iteration 2: 8788.095 ops/s +Iteration 3: 9161.878 ops/s +Iteration 4: 9360.980 ops/s +Iteration 5: 9506.760 ops/s +Iteration 6: 9276.625 ops/s +Iteration 7: 9224.367 ops/s +Iteration 8: 9491.313 ops/s +Iteration 9: 9414.785 ops/s +Iteration 10: 8128.812 ops/s +Iteration 11: 8374.805 ops/s +Iteration 12: 8447.026 ops/s +Iteration 13: 8679.809 ops/s +Iteration 14: 9509.267 ops/s +Iteration 15: 9594.618 ops/s +Iteration 16: 9459.465 ops/s +Iteration 17: 9626.515 ops/s +Iteration 18: 9617.574 ops/s +Iteration 19: 8150.611 ops/s +Iteration 20: 8657.810 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.listPersons": + 8224.560 ±(99.9%) 613.983 ops/s [Average] + (min, avg, max) = (5515.650, 8224.560, 9626.515), stdev = 1091.354 + CI (99.9%): [7610.577, 8838.544] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.programComposition + +# Run progress: 80.00% complete, ETA 00:01:25 +# Fork: 1 of 2 +# Warmup Iteration 1: 45.472 ops/s +# Warmup Iteration 2: 109.216 ops/s +# Warmup Iteration 3: 180.840 ops/s +# Warmup Iteration 4: 367.651 ops/s +# Warmup Iteration 5: 440.481 ops/s +# Warmup Iteration 6: 515.247 ops/s +# Warmup Iteration 7: 566.229 ops/s +# Warmup Iteration 8: 600.823 ops/s +# Warmup Iteration 9: 640.555 ops/s +# Warmup Iteration 10: 679.399 ops/s +# Warmup Iteration 11: 746.702 ops/s +# Warmup Iteration 12: 831.170 ops/s +# Warmup Iteration 13: 860.345 ops/s +# Warmup Iteration 14: 897.997 ops/s +# Warmup Iteration 15: 939.790 ops/s +# Warmup Iteration 16: 1091.599 ops/s +# Warmup Iteration 17: 1173.785 ops/s +# Warmup Iteration 18: 1238.166 ops/s +# Warmup Iteration 19: 1162.490 ops/s +# Warmup Iteration 20: 1194.080 ops/s +Iteration 1: 1100.679 ops/s +Iteration 2: 1127.775 ops/s +Iteration 3: 1110.322 ops/s +Iteration 4: 991.288 ops/s +Iteration 5: 993.230 ops/s +Iteration 6: 1081.221 ops/s +Iteration 7: 989.863 ops/s +Iteration 8: 1065.139 ops/s +Iteration 9: 1139.566 ops/s +Iteration 10: 1207.781 ops/s +Iteration 11: 1198.080 ops/s +Iteration 12: 1154.789 ops/s +Iteration 13: 1199.249 ops/s +Iteration 14: 1143.690 ops/s +Iteration 15: 1151.746 ops/s +Iteration 16: 1149.531 ops/s +Iteration 17: 1153.849 ops/s +Iteration 18: 1210.430 ops/s +Iteration 19: 1190.107 ops/s +Iteration 20: 1144.521 ops/s + +# Run progress: 90.00% complete, ETA 00:00:42 +# Fork: 2 of 2 +# Warmup Iteration 1: 38.261 ops/s +# Warmup Iteration 2: 98.861 ops/s +# Warmup Iteration 3: 160.652 ops/s +# Warmup Iteration 4: 357.525 ops/s +# Warmup Iteration 5: 417.417 ops/s +# Warmup Iteration 6: 512.754 ops/s +# Warmup Iteration 7: 558.492 ops/s +# Warmup Iteration 8: 586.866 ops/s +# Warmup Iteration 9: 615.910 ops/s +# Warmup Iteration 10: 631.969 ops/s +# Warmup Iteration 11: 691.911 ops/s +# Warmup Iteration 12: 704.289 ops/s +# Warmup Iteration 13: 785.972 ops/s +# Warmup Iteration 14: 861.676 ops/s +# Warmup Iteration 15: 887.930 ops/s +# Warmup Iteration 16: 895.109 ops/s +# Warmup Iteration 17: 973.828 ops/s +# Warmup Iteration 18: 1018.407 ops/s +# Warmup Iteration 19: 1118.928 ops/s +# Warmup Iteration 20: 1113.123 ops/s +Iteration 1: 1113.461 ops/s +Iteration 2: 1121.544 ops/s +Iteration 3: 1084.180 ops/s +Iteration 4: 997.866 ops/s +Iteration 5: 1013.427 ops/s +Iteration 6: 1100.493 ops/s +Iteration 7: 1106.412 ops/s +Iteration 8: 1170.259 ops/s +Iteration 9: 1189.682 ops/s +Iteration 10: 1109.980 ops/s +Iteration 11: 1147.872 ops/s +Iteration 12: 1025.216 ops/s +Iteration 13: 904.810 ops/s +Iteration 14: 999.807 ops/s +Iteration 15: 1065.675 ops/s +Iteration 16: 1051.285 ops/s +Iteration 17: 1080.437 ops/s +Iteration 18: 1234.583 ops/s +Iteration 19: 1236.249 ops/s +Iteration 20: 1222.641 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.programComposition": + 1111.968 ±(99.9%) 44.460 ops/s [Average] + (min, avg, max) = (904.810, 1111.968, 1236.249), stdev = 79.028 + CI (99.9%): [1067.508, 1156.429] (assumes normal distribution) + + +# Run complete. Total time: 00:07:07 + +Benchmark Mode Cnt Score Error Units +RPCBenchmark.createPerson thrpt 40 10637.672 ± 643.970 ops/s +RPCBenchmark.getPerson thrpt 40 13579.929 ± 530.903 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5393.624 ± 295.557 ops/s +RPCBenchmark.listPersons thrpt 40 8224.560 ± 613.983 ops/s +RPCBenchmark.programComposition thrpt 40 1111.968 ± 44.460 ops/s +``` + +## Summary + +### http + +```bash +# Run complete. Total time: 00:07:13 + +Benchmark Mode Cnt Score Error Units +HttpBenchmark.createPerson thrpt 40 2792.105 ± 126.448 ops/s +HttpBenchmark.getPerson thrpt 40 2955.287 ± 139.535 ops/s +HttpBenchmark.getPersonLinks thrpt 40 2029.031 ± 124.303 ops/s +HttpBenchmark.listPersons thrpt 40 2569.887 ± 167.753 ops/s +HttpBenchmark.programComposition thrpt 40 318.553 ± 20.476 ops/s +``` + + +### frees-rpc + +```bash +# Run complete. Total time: 00:07:07 + +Benchmark Mode Cnt Score Error Units +RPCBenchmark.createPerson thrpt 40 10637.672 ± 643.970 ops/s +RPCBenchmark.getPerson thrpt 40 13579.929 ± 530.903 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5393.624 ± 295.557 ops/s +RPCBenchmark.listPersons thrpt 40 8224.560 ± 613.983 ops/s +RPCBenchmark.programComposition thrpt 40 1111.968 ± 44.460 ops/s +``` diff --git a/results/BENCHMARK_RESULTS_LOCAL.md b/results/BENCHMARK_RESULTS_LOCAL.md new file mode 100644 index 0000000..b206025 --- /dev/null +++ b/results/BENCHMARK_RESULTS_LOCAL.md @@ -0,0 +1,1110 @@ +# Benchmark Results + +See [README](../README.md#running-benchmarks-locally) for reference. + +## Machine Details + +* Model Name: MacBook Pro +* Model Identifier: MacBookPro12,1 +* Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz +* Number of Processors: 1 +* Total Number of Cores: 2 +* L2 Cache (per Core): 256 KB +* L3 Cache: 3 MB +* Memory: 16 GB +* MacOS Sierra version 10.12 + +## jmh - http + +```bash +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.createPerson + +# Run progress: 0.00% complete, ETA 00:06:40 +# Fork: 1 of 2 +# Warmup Iteration 1: 43.510 ops/s +# Warmup Iteration 2: 221.061 ops/s +# Warmup Iteration 3: 282.533 ops/s +# Warmup Iteration 4: 355.553 ops/s +# Warmup Iteration 5: 447.621 ops/s +# Warmup Iteration 6: 671.389 ops/s +# Warmup Iteration 7: 1008.352 ops/s +# Warmup Iteration 8: 1037.159 ops/s +# Warmup Iteration 9: 1185.099 ops/s +# Warmup Iteration 10: 1172.908 ops/s +# Warmup Iteration 11: 1301.674 ops/s +# Warmup Iteration 12: 1427.618 ops/s +# Warmup Iteration 13: 1578.590 ops/s +# Warmup Iteration 14: 1847.790 ops/s +# Warmup Iteration 15: 2019.680 ops/s +# Warmup Iteration 16: 2011.505 ops/s +# Warmup Iteration 17: 3040.319 ops/s +# Warmup Iteration 18: 3246.264 ops/s +# Warmup Iteration 19: 3366.176 ops/s +# Warmup Iteration 20: 3464.709 ops/s +Iteration 1: 3883.167 ops/s +Iteration 2: 4757.768 ops/s +Iteration 3: 4704.927 ops/s +Iteration 4: 4636.892 ops/s +Iteration 5: 4806.129 ops/s +Iteration 6: 4720.934 ops/s +Iteration 7: 4266.212 ops/s +Iteration 8: 4586.290 ops/s +Iteration 9: 4887.401 ops/s +Iteration 10: 4911.264 ops/s +Iteration 11: 4444.473 ops/s +Iteration 12: 4866.564 ops/s +Iteration 13: 4891.001 ops/s +Iteration 14: 4907.989 ops/s +Iteration 15: 4813.406 ops/s +Iteration 16: 4873.560 ops/s +Iteration 17: 4767.386 ops/s +Iteration 18: 4737.670 ops/s +Iteration 19: 4773.330 ops/s +Iteration 20: 4645.576 ops/s + +# Run progress: 10.00% complete, ETA 00:07:58 +# Fork: 2 of 2 +# Warmup Iteration 1: 203.539 ops/s +# Warmup Iteration 2: 417.571 ops/s +# Warmup Iteration 3: 630.626 ops/s +# Warmup Iteration 4: 908.377 ops/s +# Warmup Iteration 5: 1487.350 ops/s +# Warmup Iteration 6: 2275.190 ops/s +# Warmup Iteration 7: 2349.210 ops/s +# Warmup Iteration 8: 2416.382 ops/s +# Warmup Iteration 9: 2349.110 ops/s +# Warmup Iteration 10: 2245.628 ops/s +# Warmup Iteration 11: 1995.283 ops/s +# Warmup Iteration 12: 2319.389 ops/s +# Warmup Iteration 13: 2469.575 ops/s +# Warmup Iteration 14: 2455.067 ops/s +# Warmup Iteration 15: 2598.714 ops/s +# Warmup Iteration 16: 2848.341 ops/s +# Warmup Iteration 17: 3089.351 ops/s +# Warmup Iteration 18: 3467.718 ops/s +# Warmup Iteration 19: 4486.663 ops/s +# Warmup Iteration 20: 4425.317 ops/s +Iteration 1: 4560.030 ops/s +Iteration 2: 4633.449 ops/s +Iteration 3: 4562.372 ops/s +Iteration 4: 4479.963 ops/s +Iteration 5: 4543.647 ops/s +Iteration 6: 4320.779 ops/s +Iteration 7: 4594.993 ops/s +Iteration 8: 4632.599 ops/s +Iteration 9: 4653.009 ops/s +Iteration 10: 4589.033 ops/s +Iteration 11: 4539.322 ops/s +Iteration 12: 4623.012 ops/s +Iteration 13: 4607.413 ops/s +Iteration 14: 4463.483 ops/s +Iteration 15: 4681.815 ops/s +Iteration 16: 4151.344 ops/s +Iteration 17: 4596.998 ops/s +Iteration 18: 4595.828 ops/s +Iteration 19: 4481.062 ops/s +Iteration 20: 4638.755 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.createPerson": + 4620.771 ±(99.9%) 117.685 ops/s [Average] + (min, avg, max) = (3883.167, 4620.771, 4911.264), stdev = 209.185 + CI (99.9%): [4503.086, 4738.456] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.getPerson + +# Run progress: 20.00% complete, ETA 00:07:01 +# Fork: 1 of 2 +# Warmup Iteration 1: 163.063 ops/s +# Warmup Iteration 2: 351.454 ops/s +# Warmup Iteration 3: 566.578 ops/s +# Warmup Iteration 4: 819.371 ops/s +# Warmup Iteration 5: 1130.959 ops/s +# Warmup Iteration 6: 2003.818 ops/s +# Warmup Iteration 7: 2775.638 ops/s +# Warmup Iteration 8: 2876.509 ops/s +# Warmup Iteration 9: 3106.245 ops/s +# Warmup Iteration 10: 3191.927 ops/s +# Warmup Iteration 11: 3304.354 ops/s +# Warmup Iteration 12: 3631.052 ops/s +# Warmup Iteration 13: 3500.010 ops/s +# Warmup Iteration 14: 3266.622 ops/s +# Warmup Iteration 15: 3564.205 ops/s +# Warmup Iteration 16: 3789.631 ops/s +# Warmup Iteration 17: 3859.481 ops/s +# Warmup Iteration 18: 3954.681 ops/s +# Warmup Iteration 19: 4006.781 ops/s +# Warmup Iteration 20: 4267.094 ops/s +Iteration 1: 5198.748 ops/s +Iteration 2: 5741.194 ops/s +Iteration 3: 6724.526 ops/s +Iteration 4: 6554.575 ops/s +Iteration 5: 6752.028 ops/s +Iteration 6: 6323.795 ops/s +Iteration 7: 6680.944 ops/s +Iteration 8: 6615.720 ops/s +Iteration 9: 6792.500 ops/s +Iteration 10: 6792.057 ops/s +Iteration 11: 6558.586 ops/s +Iteration 12: 6724.301 ops/s +Iteration 13: 6784.188 ops/s +Iteration 14: 6834.888 ops/s +Iteration 15: 6920.985 ops/s +Iteration 16: 6838.708 ops/s +Iteration 17: 6887.244 ops/s +Iteration 18: 6830.377 ops/s +Iteration 19: 6855.358 ops/s +Iteration 20: 7069.771 ops/s + +# Run progress: 30.00% complete, ETA 00:06:07 +# Fork: 2 of 2 +# Warmup Iteration 1: 257.134 ops/s +# Warmup Iteration 2: 386.838 ops/s +# Warmup Iteration 3: 510.163 ops/s +# Warmup Iteration 4: 856.128 ops/s +# Warmup Iteration 5: 1264.543 ops/s +# Warmup Iteration 6: 2095.262 ops/s +# Warmup Iteration 7: 3105.732 ops/s +# Warmup Iteration 8: 3025.020 ops/s +# Warmup Iteration 9: 3100.937 ops/s +# Warmup Iteration 10: 3282.120 ops/s +# Warmup Iteration 11: 2825.402 ops/s +# Warmup Iteration 12: 3731.040 ops/s +# Warmup Iteration 13: 3446.720 ops/s +# Warmup Iteration 14: 3387.123 ops/s +# Warmup Iteration 15: 3096.350 ops/s +# Warmup Iteration 16: 3200.781 ops/s +# Warmup Iteration 17: 3336.513 ops/s +# Warmup Iteration 18: 3334.792 ops/s +# Warmup Iteration 19: 3027.195 ops/s +# Warmup Iteration 20: 2894.231 ops/s +Iteration 1: 2824.646 ops/s +Iteration 2: 3400.329 ops/s +Iteration 3: 3955.631 ops/s +Iteration 4: 3980.853 ops/s +Iteration 5: 4914.927 ops/s +Iteration 6: 5324.717 ops/s +Iteration 7: 5509.429 ops/s +Iteration 8: 5190.754 ops/s +Iteration 9: 5357.845 ops/s +Iteration 10: 5091.802 ops/s +Iteration 11: 5482.609 ops/s +Iteration 12: 4920.992 ops/s +Iteration 13: 4913.499 ops/s +Iteration 14: 5076.005 ops/s +Iteration 15: 5026.036 ops/s +Iteration 16: 5473.480 ops/s +Iteration 17: 5378.620 ops/s +Iteration 18: 4392.366 ops/s +Iteration 19: 5775.203 ops/s +Iteration 20: 5314.163 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.getPerson": + 5744.610 ±(99.9%) 609.674 ops/s [Average] + (min, avg, max) = (2824.646, 5744.610, 7069.771), stdev = 1083.695 + CI (99.9%): [5134.936, 6354.284] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.getPersonLinks + +# Run progress: 40.00% complete, ETA 00:05:15 +# Fork: 1 of 2 +# Warmup Iteration 1: 141.620 ops/s +# Warmup Iteration 2: 250.533 ops/s +# Warmup Iteration 3: 390.273 ops/s +# Warmup Iteration 4: 544.410 ops/s +# Warmup Iteration 5: 743.903 ops/s +# Warmup Iteration 6: 1172.080 ops/s +# Warmup Iteration 7: 1779.578 ops/s +# Warmup Iteration 8: 1730.600 ops/s +# Warmup Iteration 9: 2006.945 ops/s +# Warmup Iteration 10: 2067.712 ops/s +# Warmup Iteration 11: 1716.376 ops/s +# Warmup Iteration 12: 2010.082 ops/s +# Warmup Iteration 13: 1997.685 ops/s +# Warmup Iteration 14: 2225.685 ops/s +# Warmup Iteration 15: 2273.175 ops/s +# Warmup Iteration 16: 2361.265 ops/s +# Warmup Iteration 17: 2327.914 ops/s +# Warmup Iteration 18: 2546.797 ops/s +# Warmup Iteration 19: 2583.281 ops/s +# Warmup Iteration 20: 2643.300 ops/s +Iteration 1: 2961.017 ops/s +Iteration 2: 2745.500 ops/s +Iteration 3: 2891.227 ops/s +Iteration 4: 2962.498 ops/s +Iteration 5: 2865.053 ops/s +Iteration 6: 3038.719 ops/s +Iteration 7: 2996.363 ops/s +Iteration 8: 3261.995 ops/s +Iteration 9: 2865.276 ops/s +Iteration 10: 2251.221 ops/s +Iteration 11: 2554.376 ops/s +Iteration 12: 2841.386 ops/s +Iteration 13: 2762.960 ops/s +Iteration 14: 2663.116 ops/s +Iteration 15: 2842.681 ops/s +Iteration 16: 3044.412 ops/s +Iteration 17: 3229.825 ops/s +Iteration 18: 3126.887 ops/s +Iteration 19: 2793.049 ops/s +Iteration 20: 3092.113 ops/s + +# Run progress: 50.00% complete, ETA 00:04:23 +# Fork: 2 of 2 +# Warmup Iteration 1: 211.520 ops/s +# Warmup Iteration 2: 453.025 ops/s +# Warmup Iteration 3: 614.270 ops/s +# Warmup Iteration 4: 885.855 ops/s +# Warmup Iteration 5: 1330.872 ops/s +# Warmup Iteration 6: 2038.976 ops/s +# Warmup Iteration 7: 2009.015 ops/s +# Warmup Iteration 8: 1714.825 ops/s +# Warmup Iteration 9: 1843.501 ops/s +# Warmup Iteration 10: 1991.572 ops/s +# Warmup Iteration 11: 2058.947 ops/s +# Warmup Iteration 12: 2561.800 ops/s +# Warmup Iteration 13: 2527.656 ops/s +# Warmup Iteration 14: 2604.935 ops/s +# Warmup Iteration 15: 2814.943 ops/s +# Warmup Iteration 16: 2838.798 ops/s +# Warmup Iteration 17: 2936.013 ops/s +# Warmup Iteration 18: 2735.684 ops/s +# Warmup Iteration 19: 2972.722 ops/s +# Warmup Iteration 20: 2977.990 ops/s +Iteration 1: 3035.602 ops/s +Iteration 2: 3658.212 ops/s +Iteration 3: 4171.925 ops/s +Iteration 4: 4325.421 ops/s +Iteration 5: 4210.711 ops/s +Iteration 6: 3781.112 ops/s +Iteration 7: 4366.542 ops/s +Iteration 8: 4001.172 ops/s +Iteration 9: 4059.084 ops/s +Iteration 10: 4225.294 ops/s +Iteration 11: 4217.777 ops/s +Iteration 12: 4241.982 ops/s +Iteration 13: 4566.492 ops/s +Iteration 14: 4482.204 ops/s +Iteration 15: 4427.826 ops/s +Iteration 16: 4306.382 ops/s +Iteration 17: 4223.496 ops/s +Iteration 18: 4147.567 ops/s +Iteration 19: 4262.701 ops/s +Iteration 20: 4539.529 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.getPersonLinks": + 3526.018 ±(99.9%) 398.348 ops/s [Average] + (min, avg, max) = (2251.221, 3526.018, 4566.492), stdev = 708.063 + CI (99.9%): [3127.670, 3924.365] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.listPersons + +# Run progress: 60.00% complete, ETA 00:03:30 +# Fork: 1 of 2 +# Warmup Iteration 1: 198.743 ops/s +# Warmup Iteration 2: 439.988 ops/s +# Warmup Iteration 3: 730.943 ops/s +# Warmup Iteration 4: 974.811 ops/s +# Warmup Iteration 5: 1004.119 ops/s +# Warmup Iteration 6: 1309.905 ops/s +# Warmup Iteration 7: 2035.155 ops/s +# Warmup Iteration 8: 2153.801 ops/s +# Warmup Iteration 9: 2544.428 ops/s +# Warmup Iteration 10: 2697.530 ops/s +# Warmup Iteration 11: 2355.972 ops/s +# Warmup Iteration 12: 2742.637 ops/s +# Warmup Iteration 13: 2877.070 ops/s +# Warmup Iteration 14: 2568.399 ops/s +# Warmup Iteration 15: 3001.969 ops/s +# Warmup Iteration 16: 2970.940 ops/s +# Warmup Iteration 17: 2843.443 ops/s +# Warmup Iteration 18: 2907.792 ops/s +# Warmup Iteration 19: 3035.474 ops/s +# Warmup Iteration 20: 3374.525 ops/s +Iteration 1: 3474.778 ops/s +Iteration 2: 3455.957 ops/s +Iteration 3: 4314.542 ops/s +Iteration 4: 4773.083 ops/s +Iteration 5: 4692.103 ops/s +Iteration 6: 4970.024 ops/s +Iteration 7: 5072.755 ops/s +Iteration 8: 5164.778 ops/s +Iteration 9: 5164.712 ops/s +Iteration 10: 5258.754 ops/s +Iteration 11: 5094.687 ops/s +Iteration 12: 5215.126 ops/s +Iteration 13: 5149.733 ops/s +Iteration 14: 4910.094 ops/s +Iteration 15: 4860.639 ops/s +Iteration 16: 4929.305 ops/s +Iteration 17: 4996.446 ops/s +Iteration 18: 4911.834 ops/s +Iteration 19: 5164.724 ops/s +Iteration 20: 4779.747 ops/s + +# Run progress: 70.00% complete, ETA 00:02:37 +# Fork: 2 of 2 +# Warmup Iteration 1: 195.141 ops/s +# Warmup Iteration 2: 445.708 ops/s +# Warmup Iteration 3: 759.417 ops/s +# Warmup Iteration 4: 975.407 ops/s +# Warmup Iteration 5: 1474.582 ops/s +# Warmup Iteration 6: 1544.898 ops/s +# Warmup Iteration 7: 2326.835 ops/s +# Warmup Iteration 8: 2499.049 ops/s +# Warmup Iteration 9: 2261.776 ops/s +# Warmup Iteration 10: 2062.134 ops/s +# Warmup Iteration 11: 2053.726 ops/s +# Warmup Iteration 12: 2165.309 ops/s +# Warmup Iteration 13: 2210.555 ops/s +# Warmup Iteration 14: 2637.696 ops/s +# Warmup Iteration 15: 2740.356 ops/s +# Warmup Iteration 16: 3075.799 ops/s +# Warmup Iteration 17: 3148.320 ops/s +# Warmup Iteration 18: 2857.093 ops/s +# Warmup Iteration 19: 3060.997 ops/s +# Warmup Iteration 20: 3131.750 ops/s +Iteration 1: 3241.331 ops/s +Iteration 2: 4326.085 ops/s +Iteration 3: 4108.397 ops/s +Iteration 4: 3027.347 ops/s +Iteration 5: 4417.277 ops/s +Iteration 6: 3974.355 ops/s +Iteration 7: 3556.897 ops/s +Iteration 8: 4124.323 ops/s +Iteration 9: 3884.907 ops/s +Iteration 10: 3807.296 ops/s +Iteration 11: 3721.463 ops/s +Iteration 12: 3482.444 ops/s +Iteration 13: 3541.355 ops/s +Iteration 14: 4316.629 ops/s +Iteration 15: 4405.351 ops/s +Iteration 16: 3931.848 ops/s +Iteration 17: 3488.777 ops/s +Iteration 18: 4538.124 ops/s +Iteration 19: 4132.678 ops/s +Iteration 20: 4187.835 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.listPersons": + 4364.214 ±(99.9%) 366.537 ops/s [Average] + (min, avg, max) = (3027.347, 4364.214, 5258.754), stdev = 651.519 + CI (99.9%): [3997.677, 4730.751] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.HttpBenchmark.programComposition + +# Run progress: 80.00% complete, ETA 00:01:45 +# Fork: 1 of 2 +# Warmup Iteration 1: 40.384 ops/s +# Warmup Iteration 2: 55.685 ops/s +# Warmup Iteration 3: 85.107 ops/s +# Warmup Iteration 4: 116.699 ops/s +# Warmup Iteration 5: 165.458 ops/s +# Warmup Iteration 6: 290.882 ops/s +# Warmup Iteration 7: 325.387 ops/s +# Warmup Iteration 8: 321.517 ops/s +# Warmup Iteration 9: 364.071 ops/s +# Warmup Iteration 10: 335.270 ops/s +# Warmup Iteration 11: 284.715 ops/s +# Warmup Iteration 12: 303.516 ops/s +# Warmup Iteration 13: 250.890 ops/s +# Warmup Iteration 14: 335.914 ops/s +# Warmup Iteration 15: 353.958 ops/s +# Warmup Iteration 16: 368.282 ops/s +# Warmup Iteration 17: 366.368 ops/s +# Warmup Iteration 18: 399.843 ops/s +# Warmup Iteration 19: 393.041 ops/s +# Warmup Iteration 20: 438.725 ops/s +Iteration 1: 461.229 ops/s +Iteration 2: 533.963 ops/s +Iteration 3: 594.663 ops/s +Iteration 4: 620.361 ops/s +Iteration 5: 555.793 ops/s +Iteration 6: 649.348 ops/s +Iteration 7: 599.008 ops/s +Iteration 8: 657.122 ops/s +Iteration 9: 661.612 ops/s +Iteration 10: 641.704 ops/s +Iteration 11: 544.500 ops/s +Iteration 12: 644.324 ops/s +Iteration 13: 632.762 ops/s +Iteration 14: 630.581 ops/s +Iteration 15: 615.662 ops/s +Iteration 16: 628.092 ops/s +Iteration 17: 679.282 ops/s +Iteration 18: 632.339 ops/s +Iteration 19: 618.698 ops/s +Iteration 20: 600.125 ops/s + +# Run progress: 90.00% complete, ETA 00:00:52 +# Fork: 2 of 2 +# Warmup Iteration 1: 31.648 ops/s +# Warmup Iteration 2: 72.664 ops/s +# Warmup Iteration 3: 104.509 ops/s +# Warmup Iteration 4: 93.556 ops/s +# Warmup Iteration 5: 158.821 ops/s +# Warmup Iteration 6: 192.075 ops/s +# Warmup Iteration 7: 306.464 ops/s +# Warmup Iteration 8: 305.818 ops/s +# Warmup Iteration 9: 327.345 ops/s +# Warmup Iteration 10: 312.727 ops/s +# Warmup Iteration 11: 304.173 ops/s +# Warmup Iteration 12: 309.766 ops/s +# Warmup Iteration 13: 370.391 ops/s +# Warmup Iteration 14: 332.781 ops/s +# Warmup Iteration 15: 374.837 ops/s +# Warmup Iteration 16: 366.394 ops/s +# Warmup Iteration 17: 392.958 ops/s +# Warmup Iteration 18: 369.069 ops/s +# Warmup Iteration 19: 392.265 ops/s +# Warmup Iteration 20: 396.511 ops/s +Iteration 1: 417.035 ops/s +Iteration 2: 461.035 ops/s +Iteration 3: 555.833 ops/s +Iteration 4: 509.313 ops/s +Iteration 5: 570.455 ops/s +Iteration 6: 583.735 ops/s +Iteration 7: 633.303 ops/s +Iteration 8: 598.709 ops/s +Iteration 9: 644.335 ops/s +Iteration 10: 621.924 ops/s +Iteration 11: 563.461 ops/s +Iteration 12: 591.340 ops/s +Iteration 13: 584.518 ops/s +Iteration 14: 581.446 ops/s +Iteration 15: 594.661 ops/s +Iteration 16: 627.451 ops/s +Iteration 17: 600.818 ops/s +Iteration 18: 587.303 ops/s +Iteration 19: 635.333 ops/s +Iteration 20: 589.997 ops/s + + +Result "metrifier.benchmark.HttpBenchmark.programComposition": + 593.829 ±(99.9%) 31.651 ops/s [Average] + (min, avg, max) = (417.035, 593.829, 679.282), stdev = 56.259 + CI (99.9%): [562.178, 625.480] (assumes normal distribution) + + +# Run complete. Total time: 00:08:46 + +Benchmark Mode Cnt Score Error Units +HttpBenchmark.createPerson thrpt 40 4620.771 ± 117.685 ops/s +HttpBenchmark.getPerson thrpt 40 5744.610 ± 609.674 ops/s +HttpBenchmark.getPersonLinks thrpt 40 3526.018 ± 398.348 ops/s +HttpBenchmark.listPersons thrpt 40 4364.214 ± 366.537 ops/s +HttpBenchmark.programComposition thrpt 40 593.829 ± 31.651 ops/s +``` + +## jmh - frees-rpc + +```bash +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.createPerson + +# Run progress: 0.00% complete, ETA 00:06:40 +# Fork: 1 of 2 +# Warmup Iteration 1: 157.066 ops/s +# Warmup Iteration 2: 242.756 ops/s +# Warmup Iteration 3: 373.319 ops/s +# Warmup Iteration 4: 548.012 ops/s +# Warmup Iteration 5: 893.154 ops/s +# Warmup Iteration 6: 1328.570 ops/s +# Warmup Iteration 7: 1330.560 ops/s +# Warmup Iteration 8: 1459.951 ops/s +# Warmup Iteration 9: 1492.534 ops/s +# Warmup Iteration 10: 1502.394 ops/s +# Warmup Iteration 11: 1655.905 ops/s +# Warmup Iteration 12: 1418.274 ops/s +# Warmup Iteration 13: 1891.718 ops/s +# Warmup Iteration 14: 1781.052 ops/s +# Warmup Iteration 15: 2148.786 ops/s +# Warmup Iteration 16: 2724.880 ops/s +# Warmup Iteration 17: 3399.112 ops/s +# Warmup Iteration 18: 2806.721 ops/s +# Warmup Iteration 19: 3727.940 ops/s +# Warmup Iteration 20: 3281.388 ops/s +Iteration 1: 3445.698 ops/s +Iteration 2: 3512.169 ops/s +Iteration 3: 3811.564 ops/s +Iteration 4: 3590.378 ops/s +Iteration 5: 3067.794 ops/s +Iteration 6: 3576.040 ops/s +Iteration 7: 3845.207 ops/s +Iteration 8: 3899.030 ops/s +Iteration 9: 4625.253 ops/s +Iteration 10: 4696.382 ops/s +Iteration 11: 5300.864 ops/s +Iteration 12: 4964.442 ops/s +Iteration 13: 5131.275 ops/s +Iteration 14: 5073.353 ops/s +Iteration 15: 4836.422 ops/s +Iteration 16: 5084.338 ops/s +Iteration 17: 5100.276 ops/s +Iteration 18: 5233.008 ops/s +Iteration 19: 5368.398 ops/s +Iteration 20: 5403.285 ops/s + +# Run progress: 10.00% complete, ETA 00:08:42 +# Fork: 2 of 2 +# Warmup Iteration 1: 202.196 ops/s +# Warmup Iteration 2: 512.883 ops/s +# Warmup Iteration 3: 1015.288 ops/s +# Warmup Iteration 4: 1794.972 ops/s +# Warmup Iteration 5: 2012.998 ops/s +# Warmup Iteration 6: 1981.850 ops/s +# Warmup Iteration 7: 2165.815 ops/s +# Warmup Iteration 8: 2544.153 ops/s +# Warmup Iteration 9: 2601.386 ops/s +# Warmup Iteration 10: 3511.311 ops/s +# Warmup Iteration 11: 3865.192 ops/s +# Warmup Iteration 12: 4574.300 ops/s +# Warmup Iteration 13: 5270.566 ops/s +# Warmup Iteration 14: 5224.914 ops/s +# Warmup Iteration 15: 5182.588 ops/s +# Warmup Iteration 16: 5338.489 ops/s +# Warmup Iteration 17: 5190.619 ops/s +# Warmup Iteration 18: 5204.010 ops/s +# Warmup Iteration 19: 5588.836 ops/s +# Warmup Iteration 20: 4877.981 ops/s +Iteration 1: 5795.790 ops/s +Iteration 2: 5684.320 ops/s +Iteration 3: 5149.851 ops/s +Iteration 4: 4254.135 ops/s +Iteration 5: 3977.161 ops/s +Iteration 6: 4377.886 ops/s +Iteration 7: 4422.347 ops/s +Iteration 8: 4936.292 ops/s +Iteration 9: 3966.825 ops/s +Iteration 10: 5225.849 ops/s +Iteration 11: 5646.727 ops/s +Iteration 12: 4486.417 ops/s +Iteration 13: 5158.852 ops/s +Iteration 14: 4787.394 ops/s +Iteration 15: 5522.476 ops/s +Iteration 16: 5667.954 ops/s +Iteration 17: 4418.222 ops/s +Iteration 18: 3916.934 ops/s +Iteration 19: 4341.509 ops/s +Iteration 20: 4676.408 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.createPerson": + 4649.463 ±(99.9%) 405.442 ops/s [Average] + (min, avg, max) = (3067.794, 4649.463, 5795.790), stdev = 720.673 + CI (99.9%): [4244.021, 5054.905] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.getPerson + +# Run progress: 20.00% complete, ETA 00:07:40 +# Fork: 1 of 2 +# Warmup Iteration 1: 0.744 ops/s +# Warmup Iteration 2: 1037.059 ops/s +# Warmup Iteration 3: 2338.610 ops/s +# Warmup Iteration 4: 3186.179 ops/s +# Warmup Iteration 5: 2966.684 ops/s +# Warmup Iteration 6: 2293.153 ops/s +# Warmup Iteration 7: 2855.161 ops/s +# Warmup Iteration 8: 4804.723 ops/s +# Warmup Iteration 9: 5129.499 ops/s +# Warmup Iteration 10: 7618.872 ops/s +# Warmup Iteration 11: 7584.680 ops/s +# Warmup Iteration 12: 6625.455 ops/s +# Warmup Iteration 13: 7427.855 ops/s +# Warmup Iteration 14: 8113.231 ops/s +# Warmup Iteration 15: 8011.461 ops/s +# Warmup Iteration 16: 9299.240 ops/s +# Warmup Iteration 17: 6980.068 ops/s +# Warmup Iteration 18: 6012.936 ops/s +# Warmup Iteration 19: 6840.903 ops/s +# Warmup Iteration 20: 6931.441 ops/s +Iteration 1: 5894.531 ops/s +Iteration 2: 4827.653 ops/s +Iteration 3: 6833.657 ops/s +Iteration 4: 6738.814 ops/s +Iteration 5: 5998.624 ops/s +Iteration 6: 7722.289 ops/s +Iteration 7: 6473.800 ops/s +Iteration 8: 6765.808 ops/s +Iteration 9: 3512.221 ops/s +Iteration 10: 5212.421 ops/s +Iteration 11: 5430.737 ops/s +Iteration 12: 5306.438 ops/s +Iteration 13: 5703.413 ops/s +Iteration 14: 8176.595 ops/s +Iteration 15: 6065.518 ops/s +Iteration 16: 7609.240 ops/s +Iteration 17: 7696.202 ops/s +Iteration 18: 8355.612 ops/s +Iteration 19: 7585.753 ops/s +Iteration 20: 5905.436 ops/s + +# Run progress: 30.00% complete, ETA 00:06:41 +# Fork: 2 of 2 +# Warmup Iteration 1: 0.742 ops/s +# Warmup Iteration 2: 595.728 ops/s +# Warmup Iteration 3: 1483.615 ops/s +# Warmup Iteration 4: 2304.060 ops/s +# Warmup Iteration 5: 3041.931 ops/s +# Warmup Iteration 6: 3032.440 ops/s +# Warmup Iteration 7: 3332.734 ops/s +# Warmup Iteration 8: 3747.930 ops/s +# Warmup Iteration 9: 4171.307 ops/s +# Warmup Iteration 10: 5026.343 ops/s +# Warmup Iteration 11: 7257.939 ops/s +# Warmup Iteration 12: 8515.342 ops/s +# Warmup Iteration 13: 8304.458 ops/s +# Warmup Iteration 14: 5569.853 ops/s +# Warmup Iteration 15: 7821.195 ops/s +# Warmup Iteration 16: 4660.351 ops/s +# Warmup Iteration 17: 7142.976 ops/s +# Warmup Iteration 18: 7794.529 ops/s +# Warmup Iteration 19: 7657.688 ops/s +# Warmup Iteration 20: 7533.951 ops/s +Iteration 1: 4937.529 ops/s +Iteration 2: 7304.748 ops/s +Iteration 3: 6028.069 ops/s +Iteration 4: 6807.012 ops/s +Iteration 5: 8263.639 ops/s +Iteration 6: 6450.050 ops/s +Iteration 7: 5518.217 ops/s +Iteration 8: 7839.042 ops/s +Iteration 9: 6478.652 ops/s +Iteration 10: 6684.317 ops/s +Iteration 11: 7140.346 ops/s +Iteration 12: 7602.709 ops/s +Iteration 13: 6862.209 ops/s +Iteration 14: 7706.167 ops/s +Iteration 15: 7841.799 ops/s +Iteration 16: 7491.260 ops/s +Iteration 17: 4604.550 ops/s +Iteration 18: 7046.868 ops/s +Iteration 19: 8113.594 ops/s +Iteration 20: 8659.517 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.getPerson": + 6679.876 ±(99.9%) 666.530 ops/s [Average] + (min, avg, max) = (3512.221, 6679.876, 8659.517), stdev = 1184.757 + CI (99.9%): [6013.346, 7346.407] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.getPersonLinks + +# Run progress: 40.00% complete, ETA 00:05:43 +# Fork: 1 of 2 +# Warmup Iteration 1: 0.735 ops/s +# Warmup Iteration 2: 781.683 ops/s +# Warmup Iteration 3: 1734.668 ops/s +# Warmup Iteration 4: 1790.601 ops/s +# Warmup Iteration 5: 2232.331 ops/s +# Warmup Iteration 6: 2311.347 ops/s +# Warmup Iteration 7: 2517.694 ops/s +# Warmup Iteration 8: 2716.934 ops/s +# Warmup Iteration 9: 3180.389 ops/s +# Warmup Iteration 10: 3551.217 ops/s +# Warmup Iteration 11: 3890.137 ops/s +# Warmup Iteration 12: 4348.189 ops/s +# Warmup Iteration 13: 3377.420 ops/s +# Warmup Iteration 14: 3052.139 ops/s +# Warmup Iteration 15: 3121.816 ops/s +# Warmup Iteration 16: 3652.275 ops/s +# Warmup Iteration 17: 3180.721 ops/s +# Warmup Iteration 18: 3537.619 ops/s +# Warmup Iteration 19: 4590.329 ops/s +# Warmup Iteration 20: 4865.576 ops/s +Iteration 1: 4325.985 ops/s +Iteration 2: 4704.208 ops/s +Iteration 3: 4737.322 ops/s +Iteration 4: 5720.017 ops/s +Iteration 5: 6060.263 ops/s +Iteration 6: 5641.901 ops/s +Iteration 7: 5620.830 ops/s +Iteration 8: 6127.312 ops/s +Iteration 9: 5460.776 ops/s +Iteration 10: 5461.705 ops/s +Iteration 11: 5934.379 ops/s +Iteration 12: 5758.028 ops/s +Iteration 13: 5137.556 ops/s +Iteration 14: 5576.338 ops/s +Iteration 15: 5807.119 ops/s +Iteration 16: 5549.264 ops/s +Iteration 17: 6230.859 ops/s +Iteration 18: 6188.339 ops/s +Iteration 19: 5770.742 ops/s +Iteration 20: 5370.193 ops/s + +# Run progress: 50.00% complete, ETA 00:04:45 +# Fork: 2 of 2 +# Warmup Iteration 1: 0.738 ops/s +# Warmup Iteration 2: 771.137 ops/s +# Warmup Iteration 3: 1027.309 ops/s +# Warmup Iteration 4: 1650.985 ops/s +# Warmup Iteration 5: 2625.094 ops/s +# Warmup Iteration 6: 3163.762 ops/s +# Warmup Iteration 7: 3249.263 ops/s +# Warmup Iteration 8: 4136.407 ops/s +# Warmup Iteration 9: 4606.960 ops/s +# Warmup Iteration 10: 5606.004 ops/s +# Warmup Iteration 11: 5879.752 ops/s +# Warmup Iteration 12: 5733.598 ops/s +# Warmup Iteration 13: 5226.595 ops/s +# Warmup Iteration 14: 5359.031 ops/s +# Warmup Iteration 15: 3960.076 ops/s +# Warmup Iteration 16: 5145.275 ops/s +# Warmup Iteration 17: 5147.601 ops/s +# Warmup Iteration 18: 4236.682 ops/s +# Warmup Iteration 19: 4439.259 ops/s +# Warmup Iteration 20: 5409.966 ops/s +Iteration 1: 5565.134 ops/s +Iteration 2: 5005.861 ops/s +Iteration 3: 4350.143 ops/s +Iteration 4: 4348.571 ops/s +Iteration 5: 5934.361 ops/s +Iteration 6: 6244.914 ops/s +Iteration 7: 6157.885 ops/s +Iteration 8: 5985.960 ops/s +Iteration 9: 5811.025 ops/s +Iteration 10: 4863.568 ops/s +Iteration 11: 6312.004 ops/s +Iteration 12: 6142.135 ops/s +Iteration 13: 6093.130 ops/s +Iteration 14: 5608.308 ops/s +Iteration 15: 6125.469 ops/s +Iteration 16: 6230.784 ops/s +Iteration 17: 6338.456 ops/s +Iteration 18: 6265.988 ops/s +Iteration 19: 4923.445 ops/s +Iteration 20: 4585.227 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.getPersonLinks": + 5601.888 ±(99.9%) 339.340 ops/s [Average] + (min, avg, max) = (4325.985, 5601.888, 6338.456), stdev = 603.177 + CI (99.9%): [5262.548, 5941.228] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.listPersons + +# Run progress: 60.00% complete, ETA 00:03:48 +# Fork: 1 of 2 +# Warmup Iteration 1: 309.306 ops/s +# Warmup Iteration 2: 965.695 ops/s +# Warmup Iteration 3: 1978.847 ops/s +# Warmup Iteration 4: 2755.621 ops/s +# Warmup Iteration 5: 2557.041 ops/s +# Warmup Iteration 6: 2645.518 ops/s +# Warmup Iteration 7: 2971.610 ops/s +# Warmup Iteration 8: 3582.824 ops/s +# Warmup Iteration 9: 4345.152 ops/s +# Warmup Iteration 10: 5573.142 ops/s +# Warmup Iteration 11: 6086.457 ops/s +# Warmup Iteration 12: 6160.204 ops/s +# Warmup Iteration 13: 6223.944 ops/s +# Warmup Iteration 14: 5450.820 ops/s +# Warmup Iteration 15: 5459.890 ops/s +# Warmup Iteration 16: 6045.589 ops/s +# Warmup Iteration 17: 5518.277 ops/s +# Warmup Iteration 18: 5850.975 ops/s +# Warmup Iteration 19: 5524.896 ops/s +# Warmup Iteration 20: 6270.449 ops/s +Iteration 1: 6295.349 ops/s +Iteration 2: 4110.985 ops/s +Iteration 3: 5092.334 ops/s +Iteration 4: 4756.947 ops/s +Iteration 5: 4418.934 ops/s +Iteration 6: 2981.461 ops/s +Iteration 7: 5975.441 ops/s +Iteration 8: 4545.660 ops/s +Iteration 9: 5492.892 ops/s +Iteration 10: 6170.010 ops/s +Iteration 11: 5489.728 ops/s +Iteration 12: 6018.454 ops/s +Iteration 13: 6442.334 ops/s +Iteration 14: 5683.518 ops/s +Iteration 15: 5191.085 ops/s +Iteration 16: 4599.236 ops/s +Iteration 17: 5955.455 ops/s +Iteration 18: 4569.663 ops/s +Iteration 19: 5407.093 ops/s +Iteration 20: 6029.619 ops/s + +# Run progress: 70.00% complete, ETA 00:02:51 +# Fork: 2 of 2 +# Warmup Iteration 1: 0.739 ops/s +# Warmup Iteration 2: 1017.033 ops/s +# Warmup Iteration 3: 2087.615 ops/s +# Warmup Iteration 4: 2908.688 ops/s +# Warmup Iteration 5: 3114.922 ops/s +# Warmup Iteration 6: 3319.305 ops/s +# Warmup Iteration 7: 3979.624 ops/s +# Warmup Iteration 8: 4446.812 ops/s +# Warmup Iteration 9: 4164.370 ops/s +# Warmup Iteration 10: 5440.808 ops/s +# Warmup Iteration 11: 6239.877 ops/s +# Warmup Iteration 12: 6392.205 ops/s +# Warmup Iteration 13: 6457.819 ops/s +# Warmup Iteration 14: 6654.660 ops/s +# Warmup Iteration 15: 6342.917 ops/s +# Warmup Iteration 16: 6551.336 ops/s +# Warmup Iteration 17: 6404.337 ops/s +# Warmup Iteration 18: 6431.979 ops/s +# Warmup Iteration 19: 6576.284 ops/s +# Warmup Iteration 20: 5809.248 ops/s +Iteration 1: 6532.815 ops/s +Iteration 2: 6314.420 ops/s +Iteration 3: 5891.717 ops/s +Iteration 4: 6383.807 ops/s +Iteration 5: 5915.833 ops/s +Iteration 6: 6734.234 ops/s +Iteration 7: 6057.926 ops/s +Iteration 8: 6691.827 ops/s +Iteration 9: 6555.896 ops/s +Iteration 10: 6310.441 ops/s +Iteration 11: 6499.161 ops/s +Iteration 12: 6231.056 ops/s +Iteration 13: 5028.230 ops/s +Iteration 14: 5128.111 ops/s +Iteration 15: 6100.783 ops/s +Iteration 16: 5863.433 ops/s +Iteration 17: 6140.694 ops/s +Iteration 18: 6303.404 ops/s +Iteration 19: 6737.799 ops/s +Iteration 20: 6556.753 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.listPersons": + 5730.113 ±(99.9%) 473.916 ops/s [Average] + (min, avg, max) = (2981.461, 5730.113, 6737.799), stdev = 842.385 + CI (99.9%): [5256.198, 6204.029] (assumes normal distribution) + + +# JMH version: 1.19 +# VM version: JDK 1.8.0_131, VM 25.131-b11 +# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java +# VM options: +# Warmup: 20 iterations, 1 s each +# Measurement: 20 iterations, 1 s each +# Timeout: 10 min per iteration +# Threads: 4 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: metrifier.benchmark.RPCBenchmark.programComposition + +# Run progress: 80.00% complete, ETA 00:01:54 +# Fork: 1 of 2 +# Warmup Iteration 1: 62.272 ops/s +# Warmup Iteration 2: 141.915 ops/s +# Warmup Iteration 3: 226.745 ops/s +# Warmup Iteration 4: 387.543 ops/s +# Warmup Iteration 5: 393.669 ops/s +# Warmup Iteration 6: 421.901 ops/s +# Warmup Iteration 7: 494.261 ops/s +# Warmup Iteration 8: 461.939 ops/s +# Warmup Iteration 9: 559.633 ops/s +# Warmup Iteration 10: 735.018 ops/s +# Warmup Iteration 11: 768.112 ops/s +# Warmup Iteration 12: 738.405 ops/s +# Warmup Iteration 13: 623.232 ops/s +# Warmup Iteration 14: 733.950 ops/s +# Warmup Iteration 15: 544.803 ops/s +# Warmup Iteration 16: 778.607 ops/s +# Warmup Iteration 17: 683.015 ops/s +# Warmup Iteration 18: 757.335 ops/s +# Warmup Iteration 19: 585.365 ops/s +# Warmup Iteration 20: 493.468 ops/s +Iteration 1: 651.361 ops/s +Iteration 2: 692.800 ops/s +Iteration 3: 677.598 ops/s +Iteration 4: 806.966 ops/s +Iteration 5: 854.282 ops/s +Iteration 6: 806.881 ops/s +Iteration 7: 749.940 ops/s +Iteration 8: 684.362 ops/s +Iteration 9: 671.530 ops/s +Iteration 10: 796.378 ops/s +Iteration 11: 388.758 ops/s +Iteration 12: 722.298 ops/s +Iteration 13: 841.860 ops/s +Iteration 14: 816.032 ops/s +Iteration 15: 753.413 ops/s +Iteration 16: 829.782 ops/s +Iteration 17: 738.661 ops/s +Iteration 18: 727.012 ops/s +Iteration 19: 867.021 ops/s +Iteration 20: 878.184 ops/s + +# Run progress: 90.00% complete, ETA 00:00:57 +# Fork: 2 of 2 +# Warmup Iteration 1: 61.586 ops/s +# Warmup Iteration 2: 111.359 ops/s +# Warmup Iteration 3: 223.614 ops/s +# Warmup Iteration 4: 274.978 ops/s +# Warmup Iteration 5: 292.766 ops/s +# Warmup Iteration 6: 329.878 ops/s +# Warmup Iteration 7: 329.757 ops/s +# Warmup Iteration 8: 356.977 ops/s +# Warmup Iteration 9: 381.388 ops/s +# Warmup Iteration 10: 383.102 ops/s +# Warmup Iteration 11: 354.048 ops/s +# Warmup Iteration 12: 555.159 ops/s +# Warmup Iteration 13: 473.715 ops/s +# Warmup Iteration 14: 433.081 ops/s +# Warmup Iteration 15: 365.960 ops/s +# Warmup Iteration 16: 402.010 ops/s +# Warmup Iteration 17: 313.301 ops/s +# Warmup Iteration 18: 501.835 ops/s +# Warmup Iteration 19: 520.743 ops/s +# Warmup Iteration 20: 517.526 ops/s +Iteration 1: 556.712 ops/s +Iteration 2: 554.078 ops/s +Iteration 3: 546.968 ops/s +Iteration 4: 540.331 ops/s +Iteration 5: 610.320 ops/s +Iteration 6: 816.763 ops/s +Iteration 7: 895.258 ops/s +Iteration 8: 864.662 ops/s +Iteration 9: 822.553 ops/s +Iteration 10: 908.558 ops/s +Iteration 11: 795.973 ops/s +Iteration 12: 882.793 ops/s +Iteration 13: 961.580 ops/s +Iteration 14: 922.941 ops/s +Iteration 15: 922.164 ops/s +Iteration 16: 996.012 ops/s +Iteration 17: 931.374 ops/s +Iteration 18: 904.276 ops/s +Iteration 19: 951.750 ops/s +Iteration 20: 940.422 ops/s + + +Result "metrifier.benchmark.RPCBenchmark.programComposition": + 782.015 ±(99.9%) 78.340 ops/s [Average] + (min, avg, max) = (388.758, 782.015, 996.012), stdev = 139.250 + CI (99.9%): [703.675, 860.356] (assumes normal distribution) + + +# Run complete. Total time: 00:09:31 + +Benchmark Mode Cnt Score Error Units +RPCBenchmark.createPerson thrpt 40 4649.463 ± 405.442 ops/s +RPCBenchmark.getPerson thrpt 40 6679.876 ± 666.530 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5601.888 ± 339.340 ops/s +RPCBenchmark.listPersons thrpt 40 5730.113 ± 473.916 ops/s +RPCBenchmark.programComposition thrpt 40 782.015 ± 78.340 ops/s +``` + +## Summary + +### http + +```bash +# Run complete. Total time: 00:08:46 + +Benchmark Mode Cnt Score Error Units +HttpBenchmark.createPerson thrpt 40 4620.771 ± 117.685 ops/s +HttpBenchmark.getPerson thrpt 40 5744.610 ± 609.674 ops/s +HttpBenchmark.getPersonLinks thrpt 40 3526.018 ± 398.348 ops/s +HttpBenchmark.listPersons thrpt 40 4364.214 ± 366.537 ops/s +HttpBenchmark.programComposition thrpt 40 593.829 ± 31.651 ops/s +``` + + +### frees-rpc + +```bash +# Run complete. Total time: 00:09:31 + +Benchmark Mode Cnt Score Error Units +RPCBenchmark.createPerson thrpt 40 4649.463 ± 405.442 ops/s +RPCBenchmark.getPerson thrpt 40 6679.876 ± 666.530 ops/s +RPCBenchmark.getPersonLinks thrpt 40 5601.888 ± 339.340 ops/s +RPCBenchmark.listPersons thrpt 40 5730.113 ± 473.916 ops/s +RPCBenchmark.programComposition thrpt 40 782.015 ± 78.340 ops/s +``` diff --git a/version.sbt b/version.sbt index 7131d35..c8efe64 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "0.0.2-SNAPSHOT" +version in ThisBuild := "0.0.2"