From ce139942750fe20556830d5cba54def974d26aa5 Mon Sep 17 00:00:00 2001 From: prrao87 Date: Tue, 10 Feb 2026 16:41:55 -0500 Subject: [PATCH 1/2] Bump lance-graph version --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4764528..1bc11dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dependencies = [ "dspy>=3.1.2", "faker>=40.1.2", "kuzu>=0.11.3", - "lance-graph>=0.5.1", + "lance-graph>=0.5.2", "matplotlib>=3.10.8", "neo4j>=6.1.0", "polars>=1.37.1", diff --git a/uv.lock b/uv.lock index 104deb6..e8391fa 100644 --- a/uv.lock +++ b/uv.lock @@ -859,7 +859,7 @@ requires-dist = [ { name = "dspy", specifier = ">=3.1.2" }, { name = "faker", specifier = ">=40.1.2" }, { name = "kuzu", specifier = ">=0.11.3" }, - { name = "lance-graph", specifier = ">=0.5.1" }, + { name = "lance-graph", specifier = ">=0.5.2" }, { name = "matplotlib", specifier = ">=3.10.8" }, { name = "neo4j", specifier = ">=6.1.0" }, { name = "polars", specifier = ">=1.37.1" }, @@ -1257,7 +1257,7 @@ wheels = [ [[package]] name = "lance-graph" -version = "0.5.1" +version = "0.5.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fastapi" }, @@ -1270,9 +1270,9 @@ dependencies = [ { name = "pyyaml" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/57/17/07d3f84309e76c1ae69cda0650e3e53c65852d62e5d90b41c46fc117d59e/lance_graph-0.5.1.tar.gz", hash = "sha256:79e429da05911dfea29452fa484d14a1a0e9e3837890aa79f6aea7164ceec8ed", size = 499692, upload-time = "2026-02-04T01:34:24.006Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/7f/ce4d9ff92b403489010a46c5d32dc870783f04760665dfbc81148a90924f/lance_graph-0.5.2.tar.gz", hash = "sha256:ee6d6a78bbc8465d90ddd4c413db4a0381938479d96faf585fed1870ebd359dd", size = 502101, upload-time = "2026-02-08T21:48:19.947Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/a1/c4d887c9d0dd8aed0e181434fcb2a07d6361dbeac069aa58ffef2610137a/lance_graph-0.5.1-cp39-abi3-manylinux_2_39_x86_64.whl", hash = "sha256:71c803e055240b45067e453cb1dfbdf8805720921f3b676b38d429ed5516c4fa", size = 44756576, upload-time = "2026-02-04T01:34:21.831Z" }, + { url = "https://files.pythonhosted.org/packages/bc/5f/108ba81f22eaf10405aad8f594cef2068c2cf4a3a781209a2855379d81a2/lance_graph-0.5.2-cp39-abi3-manylinux_2_39_x86_64.whl", hash = "sha256:ea161782143a3f00ec3c92c945a31d1ffda690b9ba45ef26fe7e63a0aea037fd", size = 44755366, upload-time = "2026-02-08T21:48:24.353Z" }, ] [[package]] From 4f5646f446e306ab74f7f97cd17918a909857346 Mon Sep 17 00:00:00 2001 From: prrao87 Date: Tue, 10 Feb 2026 16:42:11 -0500 Subject: [PATCH 2/2] Update benchmark results with Q30 (it now runs!) --- README.md | 64 +++++++-------- kuzu/README.md | 81 ++++++++++--------- kuzu/benchmark_query.py | 6 +- kuzu/query.py | 6 +- ladybug/README.md | 81 ++++++++++--------- ladybug/benchmark_query.py | 6 +- ladybug/query.py | 6 +- lance_graph/README.md | 69 ++++++++-------- lance_graph/benchmark_query.py | 6 +- lance_graph/query.py | 9 +-- neo4j/README.md | 81 ++++++++++--------- neo4j/benchmark_query.py | 6 +- neo4j/query.py | 6 +- results/{ => archived}/lance-graph-0.5.1.txt | 0 results/benchmark_heatmap.png | Bin 129611 -> 133187 bytes results/kuzu-0.11.3.txt | 67 +++++++-------- results/ladybug-0.14.1.txt | 67 +++++++-------- results/lance-graph-0.5.2.txt | 34 ++++++++ results/neo4j-2025.12.1.txt | 67 +++++++-------- 19 files changed, 350 insertions(+), 312 deletions(-) rename results/{ => archived}/lance-graph-0.5.1.txt (100%) create mode 100644 results/lance-graph-0.5.2.txt diff --git a/README.md b/README.md index cbf1930..9a15a04 100644 --- a/README.md +++ b/README.md @@ -93,40 +93,38 @@ each of the 30 queries run in the benchmark. ## High-level results -| Query | neo4j-2025.12.1 (ms) | kuzu-0.11.3 (ms) | ladybug-0.14.1 (ms) | lance-graph-0.5.1 (ms) | +| Query | neo4j-2025.12.1 (ms) | kuzu-0.11.3 (ms) | ladybug-0.14.1 (ms) | lance-graph-0.5.2 (ms) | | --- | --- | --- | --- | --- | -| q1 | 5.7ms | 2.4ms (2.4x) | 2.1ms (2.7x) | 1.5ms (3.9x) | -| q2 | 6.4ms | 1.5ms (4.4x) | 1.5ms (4.2x) | 2.3ms (2.8x) | -| q3 | 2.8ms | 1.4ms (2.1x) | 1.2ms (2.2x) | 3.4ms (0.8x) | -| q4 | 4.8ms | 1.1ms (4.6x) | 1.1ms (4.3x) | 3.1ms (1.5x) | -| q5 | 5.1ms | 3.9ms (1.3x) | 3.6ms (1.4x) | 2.1ms (2.4x) | -| q6 | 4.1ms | 0.8ms (5.1x) | 0.9ms (4.6x) | 0.8ms (5.0x) | -| q7 | 2.2ms | 31.0ms (0.1x) | 31.1ms (0.1x) | 13.2ms (0.2x) | -| q8 | 15.6ms | 2.8ms (5.6x) | 2.8ms (5.5x) | 1.3ms (12.4x) | -| q9 | 2.6ms | 2.0ms (1.3x) | 2.2ms (1.2x) | 2.2ms (1.2x) | -| q10 | 4.9ms | 1.8ms (2.7x) | 1.9ms (2.6x) | 25.2ms (0.2x) | -| q11 | 12.9ms | 8.1ms (1.6x) | 8.4ms (1.5x) | 3.2ms (4.0x) | -| q12 | 4.7ms | 18.4ms (0.3x) | 17.9ms (0.3x) | 17.7ms (0.3x) | -| q13 | 8.8ms | 50.2ms (0.2x) | 51.6ms (0.2x) | 8.7ms (1.0x) | -| q14 | 1.6ms | 1.7ms (1.0x) | 1.8ms (0.9x) | 2.8ms (0.6x) | -| q15 | 3.2ms | 2.7ms (1.2x) | 2.7ms (1.2x) | 2.3ms (1.4x) | -| q16 | 2.0ms | 2.0ms (1.0x) | 2.0ms (1.0x) | 4.2ms (0.5x) | -| q17 | 5.3ms | 3.0ms (1.8x) | 2.9ms (1.8x) | 2.6ms (2.0x) | -| q18 | 4.1ms | 1.7ms (2.3x) | 1.8ms (2.3x) | 2.0ms (2.0x) | -| q19 | 6.1ms | 13.3ms (0.5x) | 13.6ms (0.5x) | 18.9ms (0.3x) | -| q20 | 421.8ms | 12.0ms (35.2x) | 11.1ms (38.1x) | 2.4ms (175.8x) | -| q21 | 1.6ms | 0.6ms (2.7x) | 0.6ms (2.7x) | 1.7ms (0.9x) | -| q22 | 3.7ms | 19.8ms (0.2x) | 21.2ms (0.2x) | 12.5ms (0.3x) | -| q23 | 4.0ms | 1.4ms (2.9x) | 1.4ms (2.8x) | 2.7ms (1.5x) | -| q24 | 1.5ms | 1.5ms (1.0x) | 1.6ms (1.0x) | 2.0ms (0.8x) | -| q25 | 3.1ms | 1.6ms (1.9x) | 1.7ms (1.8x) | 1.5ms (2.1x) | -| q26 | 1.8ms | 3.6ms (0.5x) | 3.8ms (0.5x) | 3.1ms (0.6x) | -| q27 | 3.4ms | 13.4ms (0.3x) | 16.0ms (0.2x) | 23.0ms (0.1x) | -| q28 | 4.3ms | 1.6ms (2.6x) | 1.9ms (2.3x) | 2.9ms (1.5x) | -| q29 | 3.1ms | 1.3ms (2.4x) | 1.3ms (2.4x) | 2.7ms (1.2x) | - -> [!NOTE] -> Q30 (self-referencing pattern) is the most expensive query in this benchmark and is currently not supported in lance-graph. The lance-graph query processor is undergoing significant optimization -- follow this repo and check back in soon! +| q1 | 4.9ms | 2.3ms (2.2x) | 2.1ms (2.3x) | 1.6ms (3.1x) | +| q2 | 5.9ms | 1.4ms (4.1x) | 1.5ms (3.9x) | 2.4ms (2.5x) | +| q3 | 2.9ms | 1.2ms (2.4x) | 1.3ms (2.3x) | 3.4ms (0.9x) | +| q4 | 4.1ms | 1.0ms (4.0x) | 1.0ms (4.0x) | 3.1ms (1.3x) | +| q5 | 4.9ms | 3.8ms (1.3x) | 3.7ms (1.3x) | 2.1ms (2.3x) | +| q6 | 3.9ms | 0.8ms (5.0x) | 0.8ms (4.6x) | 0.8ms (4.6x) | +| q7 | 2.2ms | 31.1ms (0.1x) | 31.6ms (0.1x) | 13.3ms (0.2x) | +| q8 | 14.6ms | 2.9ms (5.1x) | 2.9ms (5.1x) | 1.3ms (11.3x) | +| q9 | 2.8ms | 2.1ms (1.4x) | 2.2ms (1.3x) | 2.2ms (1.3x) | +| q10 | 4.9ms | 1.8ms (2.7x) | 1.9ms (2.6x) | 25.3ms (0.2x) | +| q11 | 14.9ms | 8.5ms (1.8x) | 8.1ms (1.8x) | 3.3ms (4.5x) | +| q12 | 8.1ms | 20.7ms (0.4x) | 16.9ms (0.5x) | 18.0ms (0.4x) | +| q13 | 9.9ms | 50.8ms (0.2x) | 51.5ms (0.2x) | 8.9ms (1.1x) | +| q14 | 1.7ms | 1.7ms (1.0x) | 1.8ms (0.9x) | 2.9ms (0.6x) | +| q15 | 3.3ms | 2.7ms (1.2x) | 2.7ms (1.2x) | 2.3ms (1.4x) | +| q16 | 2.4ms | 2.0ms (1.2x) | 2.0ms (1.2x) | 4.4ms (0.5x) | +| q17 | 4.9ms | 3.0ms (1.6x) | 3.0ms (1.7x) | 2.7ms (1.8x) | +| q18 | 3.7ms | 1.8ms (2.0x) | 1.8ms (2.0x) | 2.2ms (1.7x) | +| q19 | 7.8ms | 12.4ms (0.6x) | 14.1ms (0.6x) | 19.3ms (0.4x) | +| q20 | 475.7ms | 11.9ms (39.9x) | 10.9ms (43.6x) | 2.6ms (183.6x) | +| q21 | 1.8ms | 0.6ms (3.2x) | 0.6ms (3.1x) | 1.7ms (1.0x) | +| q22 | 3.6ms | 24.2ms (0.2x) | 22.3ms (0.2x) | 13.7ms (0.3x) | +| q23 | 3.9ms | 1.4ms (2.8x) | 1.6ms (2.5x) | 2.7ms (1.4x) | +| q24 | 1.6ms | 1.5ms (1.1x) | 1.5ms (1.1x) | 2.0ms (0.8x) | +| q25 | 3.1ms | 1.8ms (1.7x) | 1.7ms (1.8x) | 1.5ms (2.1x) | +| q26 | 1.8ms | 3.7ms (0.5x) | 3.6ms (0.5x) | 3.1ms (0.6x) | +| q27 | 3.5ms | 15.2ms (0.2x) | 15.4ms (0.2x) | 23.0ms (0.2x) | +| q28 | 3.9ms | 1.7ms (2.3x) | 1.8ms (2.2x) | 2.8ms (1.4x) | +| q29 | 2.9ms | 1.3ms (2.3x) | 1.2ms (2.4x) | 2.7ms (1.1x) | +| q30 | 1255.2ms | 158.7ms (7.9x) | 154.4ms (8.1x) | 31.3ms (40.1x) | The fastest and slowest systems for each query can be visualized via the following heatmap. diff --git a/kuzu/README.md b/kuzu/README.md index d9b0519..89f0c8c 100644 --- a/kuzu/README.md +++ b/kuzu/README.md @@ -52,54 +52,55 @@ The benchmark can be run using the following command. The results are output to ```bash ❯ uv run pytest benchmark_query.py --benchmark-min-rounds=5 --benchmark-warmup-iterations=5 --benchmark-disable-gc --benchmark-sort=fullname -==================================== test session starts ==================================== +============================================== test session starts =============================================== platform darwin -- Python 3.13.7, pytest-9.0.2, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=True min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=5) rootdir: /Users/prrao/code/graph-benchmark-ldbc-snb configfile: pyproject.toml plugins: anyio-4.12.1, benchmark-5.2.3, asyncio-1.3.0, Faker-40.1.2 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -collected 29 items - -benchmark_query.py ............................. [100%] - - ------------------------------------------------------------------------------------- benchmark: 29 tests ------------------------------------------------------------------------------------ -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 2.2577 (4.66) 2.6252 (3.30) 2.3674 (4.00) 0.1256 (2.17) 2.3013 (3.96) 0.1035 (1.40) 1;1 422.4013 (0.25) 7 1 -test_benchmark_query10 1.5427 (3.19) 2.1656 (2.73) 1.7854 (3.02) 0.1151 (1.99) 1.7797 (3.07) 0.1413 (1.91) 68;2 560.0853 (0.33) 219 1 -test_benchmark_query11 7.6476 (15.80) 8.9412 (11.25) 8.0510 (13.61) 0.2907 (5.01) 8.0069 (13.79) 0.3396 (4.59) 20;5 124.2076 (0.07) 76 1 -test_benchmark_query12 14.4927 (29.94) 27.4369 (34.53) 18.3637 (31.05) 3.8226 (65.95) 16.2928 (28.07) 5.7663 (78.01) 4;0 54.4552 (0.03) 15 1 -test_benchmark_query13 48.4199 (100.02) 51.4664 (64.77) 50.2393 (84.96) 0.8729 (15.06) 50.3359 (86.72) 1.4880 (20.13) 7;0 19.9047 (0.01) 18 1 -test_benchmark_query14 1.4160 (2.92) 1.9150 (2.41) 1.6599 (2.81) 0.1091 (1.88) 1.6518 (2.85) 0.1297 (1.75) 51;1 602.4426 (0.36) 155 1 -test_benchmark_query15 2.4607 (5.08) 3.2792 (4.13) 2.6984 (4.56) 0.1264 (2.18) 2.6811 (4.62) 0.1637 (2.21) 86;5 370.5902 (0.22) 278 1 -test_benchmark_query16 1.7999 (3.72) 2.1456 (2.70) 1.9558 (3.31) 0.0769 (1.33) 1.9431 (3.35) 0.1080 (1.46) 36;0 511.3071 (0.30) 102 1 -test_benchmark_query17 2.7153 (5.61) 3.4063 (4.29) 2.9574 (5.00) 0.1463 (2.52) 2.9277 (5.04) 0.1782 (2.41) 46;9 338.1399 (0.20) 184 1 -test_benchmark_query18 1.4720 (3.04) 7.3080 (9.20) 1.7397 (2.94) 0.3661 (6.32) 1.6984 (2.93) 0.1279 (1.73) 5;10 574.8125 (0.34) 383 1 -test_benchmark_query19 8.9191 (18.42) 23.9760 (30.18) 13.2692 (22.44) 3.6640 (63.22) 12.7555 (21.98) 4.3972 (59.49) 14;2 75.3626 (0.04) 50 1 -test_benchmark_query2 1.3465 (2.78) 1.9035 (2.40) 1.4589 (2.47) 0.0886 (1.53) 1.4350 (2.47) 0.1081 (1.46) 18;1 685.4362 (0.41) 79 1 -test_benchmark_query20 10.9251 (22.57) 25.8535 (32.54) 11.9840 (20.27) 2.5636 (44.23) 11.2959 (19.46) 0.2591 (3.51) 3;6 83.4447 (0.05) 36 1 -test_benchmark_query21 0.4841 (1.0) 0.7945 (1.0) 0.5913 (1.0) 0.0580 (1.0) 0.5804 (1.0) 0.0739 (1.0) 76;6 1,691.0646 (1.0) 250 1 -test_benchmark_query22 13.8039 (28.51) 30.7185 (38.66) 19.8331 (33.54) 4.4588 (76.93) 19.3723 (33.38) 6.9103 (93.49) 9;0 50.4206 (0.03) 29 1 -test_benchmark_query23 1.1496 (2.37) 4.3593 (5.49) 1.3911 (2.35) 0.2145 (3.70) 1.3585 (2.34) 0.0933 (1.26) 19;32 718.8361 (0.43) 610 1 -test_benchmark_query24 1.2693 (2.62) 2.0424 (2.57) 1.5169 (2.57) 0.1056 (1.82) 1.5078 (2.60) 0.1322 (1.79) 107;2 659.2339 (0.39) 353 1 -test_benchmark_query25 1.4011 (2.89) 1.9984 (2.52) 1.6455 (2.78) 0.1158 (2.00) 1.6369 (2.82) 0.1343 (1.82) 104;10 607.7344 (0.36) 325 1 -test_benchmark_query26 3.2755 (6.77) 10.1319 (12.75) 3.6176 (6.12) 0.5596 (9.65) 3.5371 (6.09) 0.2210 (2.99) 4;6 276.4285 (0.16) 175 1 -test_benchmark_query27 9.4421 (19.50) 24.2963 (30.58) 13.3928 (22.65) 3.3355 (57.55) 14.2491 (24.55) 5.3340 (72.16) 30;1 74.6672 (0.04) 81 1 -test_benchmark_query28 1.3805 (2.85) 1.9694 (2.48) 1.6460 (2.78) 0.0947 (1.63) 1.6314 (2.81) 0.1175 (1.59) 130;11 607.5488 (0.36) 472 1 -test_benchmark_query29 1.0577 (2.18) 3.9660 (4.99) 1.2988 (2.20) 0.2884 (4.98) 1.2493 (2.15) 0.1126 (1.52) 9;15 769.9662 (0.46) 285 1 -test_benchmark_query3 1.1598 (2.40) 4.8344 (6.08) 1.3517 (2.29) 0.4075 (7.03) 1.2684 (2.19) 0.0970 (1.31) 3;11 739.8151 (0.44) 126 1 -test_benchmark_query4 0.9308 (1.92) 1.2335 (1.55) 1.0504 (1.78) 0.0711 (1.23) 1.0377 (1.79) 0.0961 (1.30) 66;0 952.0332 (0.56) 194 1 -test_benchmark_query5 3.5945 (7.42) 4.5954 (5.78) 3.9005 (6.60) 0.1726 (2.98) 3.9024 (6.72) 0.2002 (2.71) 23;2 256.3742 (0.15) 89 1 -test_benchmark_query6 0.6538 (1.35) 3.6604 (4.61) 0.8143 (1.38) 0.1904 (3.28) 0.7678 (1.32) 0.1126 (1.52) 29;29 1,228.0319 (0.73) 336 1 -test_benchmark_query7 29.8127 (61.58) 40.9078 (51.49) 31.0440 (52.50) 2.0570 (35.49) 30.6197 (52.75) 0.8259 (11.17) 1;1 32.2124 (0.02) 27 1 -test_benchmark_query8 2.5916 (5.35) 3.1906 (4.02) 2.7599 (4.67) 0.1295 (2.23) 2.7272 (4.70) 0.1475 (2.00) 35;8 362.3276 (0.21) 138 1 -test_benchmark_query9 1.8081 (3.73) 2.3520 (2.96) 2.0342 (3.44) 0.1250 (2.16) 2.0075 (3.46) 0.1910 (2.58) 65;0 491.6035 (0.29) 203 1 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +collected 30 items + +benchmark_query.py .............................. [100%] + + +-------------------------------------------------------------------------------------- benchmark: 30 tests --------------------------------------------------------------------------------------- +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 2.1209 (4.50) 2.6556 (3.34) 2.2756 (3.96) 0.1363 (2.94) 2.2485 (3.97) 0.1500 (2.90) 3;1 439.4414 (0.25) 14 1 +test_benchmark_query10 1.6590 (3.52) 4.6478 (5.84) 1.8253 (3.18) 0.1547 (3.34) 1.8034 (3.19) 0.0939 (1.81) 24;21 547.8598 (0.31) 487 1 +test_benchmark_query11 7.9723 (16.91) 9.1218 (11.46) 8.5255 (14.84) 0.2622 (5.66) 8.4948 (15.00) 0.4197 (8.11) 29;0 117.2955 (0.07) 80 1 +test_benchmark_query12 16.2808 (34.54) 34.7569 (43.65) 20.7133 (36.05) 3.3054 (71.33) 20.3600 (35.96) 2.2653 (43.77) 7;4 48.2782 (0.03) 35 1 +test_benchmark_query13 49.2052 (104.40) 59.5040 (74.73) 50.7832 (88.40) 2.2413 (48.36) 50.2405 (88.74) 0.7761 (15.00) 1;2 19.6916 (0.01) 19 1 +test_benchmark_query14 1.4937 (3.17) 1.9786 (2.48) 1.6776 (2.92) 0.0824 (1.78) 1.6659 (2.94) 0.1000 (1.93) 111;9 596.0949 (0.34) 379 1 +test_benchmark_query15 2.5168 (5.34) 3.1308 (3.93) 2.7355 (4.76) 0.0941 (2.03) 2.7249 (4.81) 0.1155 (2.23) 87;9 365.5617 (0.21) 348 1 +test_benchmark_query16 1.8140 (3.85) 2.2756 (2.86) 1.9688 (3.43) 0.0689 (1.49) 1.9644 (3.47) 0.0859 (1.66) 102;6 507.9228 (0.29) 334 1 +test_benchmark_query17 2.7828 (5.90) 8.5874 (10.78) 3.0171 (5.25) 0.4188 (9.04) 2.9600 (5.23) 0.1179 (2.28) 6;17 331.4425 (0.19) 281 1 +test_benchmark_query18 1.6130 (3.42) 2.3325 (2.93) 1.8234 (3.17) 0.0949 (2.05) 1.8152 (3.21) 0.1185 (2.29) 121;13 548.4163 (0.32) 459 1 +test_benchmark_query19 8.5983 (18.24) 23.7949 (29.88) 12.4075 (21.60) 2.7082 (58.44) 12.0801 (21.34) 3.5131 (67.88) 17;2 80.5965 (0.05) 71 1 +test_benchmark_query2 1.2590 (2.67) 2.0387 (2.56) 1.4312 (2.49) 0.0977 (2.11) 1.4153 (2.50) 0.1035 (2.00) 61;13 698.6901 (0.40) 279 1 +test_benchmark_query20 11.1750 (23.71) 21.4228 (26.90) 11.9200 (20.75) 1.4845 (32.03) 11.4913 (20.30) 0.4432 (8.56) 5;10 83.8925 (0.05) 70 1 +test_benchmark_query21 0.4713 (1.0) 0.7962 (1.0) 0.5745 (1.0) 0.0527 (1.14) 0.5661 (1.0) 0.0655 (1.27) 197;20 1,740.6530 (1.0) 724 1 +test_benchmark_query22 14.6594 (31.10) 37.5509 (47.16) 24.2478 (42.21) 4.5574 (98.34) 23.0444 (40.70) 5.4208 (104.75) 10;2 41.2409 (0.02) 43 1 +test_benchmark_query23 1.2525 (2.66) 4.4241 (5.56) 1.3910 (2.42) 0.1410 (3.04) 1.3794 (2.44) 0.0798 (1.54) 16;15 718.8820 (0.41) 587 1 +test_benchmark_query24 1.3565 (2.88) 4.7922 (6.02) 1.5415 (2.68) 0.2381 (5.14) 1.5109 (2.67) 0.0840 (1.62) 21;27 648.7317 (0.37) 642 1 +test_benchmark_query25 1.4541 (3.09) 5.7062 (7.17) 1.7919 (3.12) 0.2492 (5.38) 1.7626 (3.11) 0.1363 (2.63) 14;15 558.0717 (0.32) 552 1 +test_benchmark_query26 3.4484 (7.32) 4.1133 (5.17) 3.6787 (6.40) 0.1269 (2.74) 3.6656 (6.47) 0.1743 (3.37) 87;1 271.8387 (0.16) 250 1 +test_benchmark_query27 10.2395 (21.72) 32.9692 (41.41) 15.2078 (26.47) 4.0537 (87.48) 14.4512 (25.53) 3.5987 (69.54) 14;5 65.7559 (0.04) 73 1 +test_benchmark_query28 1.5180 (3.22) 3.8031 (4.78) 1.6778 (2.92) 0.1362 (2.94) 1.6551 (2.92) 0.1071 (2.07) 51;22 596.0221 (0.34) 486 1 +test_benchmark_query29 1.0736 (2.28) 3.6777 (4.62) 1.2813 (2.23) 0.1644 (3.55) 1.2672 (2.24) 0.0824 (1.59) 16;21 780.4858 (0.45) 724 1 +test_benchmark_query3 1.0963 (2.33) 1.8806 (2.36) 1.2479 (2.17) 0.1060 (2.29) 1.2198 (2.15) 0.1051 (2.03) 65;22 801.3508 (0.46) 408 1 +test_benchmark_query30 148.6766 (315.44) 171.5846 (215.49) 158.6827 (276.21) 8.2511 (178.05) 157.0752 (277.45) 12.4123 (239.85) 2;0 6.3019 (0.00) 7 1 +test_benchmark_query4 0.8992 (1.91) 1.2998 (1.63) 1.0380 (1.81) 0.0605 (1.30) 1.0327 (1.82) 0.0733 (1.42) 142;13 963.3932 (0.55) 517 1 +test_benchmark_query5 3.5444 (7.52) 4.1010 (5.15) 3.7562 (6.54) 0.0961 (2.07) 3.7504 (6.62) 0.1137 (2.20) 53;3 266.2274 (0.15) 181 1 +test_benchmark_query6 0.6662 (1.41) 1.0573 (1.33) 0.7689 (1.34) 0.0463 (1.0) 0.7576 (1.34) 0.0518 (1.0) 234;33 1,300.5784 (0.75) 924 1 +test_benchmark_query7 29.4940 (62.58) 42.5176 (53.40) 31.1065 (54.15) 2.2509 (48.57) 30.7164 (54.26) 0.8056 (15.57) 2;2 32.1476 (0.02) 31 1 +test_benchmark_query8 2.6213 (5.56) 3.2949 (4.14) 2.8580 (4.97) 0.1185 (2.56) 2.8365 (5.01) 0.1521 (2.94) 58;6 349.8981 (0.20) 220 1 +test_benchmark_query9 1.8395 (3.90) 5.8372 (7.33) 2.0653 (3.59) 0.2929 (6.32) 2.0221 (3.57) 0.1272 (2.46) 7;15 484.1951 (0.28) 432 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean -==================================== 29 passed in 15.92s ==================================== +============================================== 30 passed in 25.36s =============================================== ``` \ No newline at end of file diff --git a/kuzu/benchmark_query.py b/kuzu/benchmark_query.py index 7269df5..588ae08 100644 --- a/kuzu/benchmark_query.py +++ b/kuzu/benchmark_query.py @@ -236,6 +236,6 @@ def test_benchmark_query29(benchmark, connection): _assert_single_value(result, "has_written_post_with_safari", False) -# def test_benchmark_query30(benchmark, connection): -# result = benchmark(query.run_query30, connection) -# _assert_single_value(result, "has_self_reply", True) +def test_benchmark_query30(benchmark, connection): + result = benchmark(query.run_query30, connection) + _assert_single_value(result, "has_self_reply", True) diff --git a/kuzu/query.py b/kuzu/query.py index 5e5a005..36b5550 100644 --- a/kuzu/query.py +++ b/kuzu/query.py @@ -334,8 +334,8 @@ def run_query29(conn: Connection): def run_query30(conn: Connection): "Are there comments replying to posts created by the same person?" query = """ - MATCH (c:Comment)-[:commentHasCreator]->(p:Person) - <-[:postHasCreator]-(post:Post)<-[:replyOfPost]-(c) + MATCH (c:Comment)-[:commentHasCreator]->(creator:Person), + (c)-[:replyOfPost]->(post:Post)-[:postHasCreator]->(creator) RETURN COUNT(DISTINCT c.ID) > 0 AS has_self_reply; """ return _execute(conn, 30, query) @@ -371,7 +371,7 @@ def run_query30(conn: Connection): 27: run_query27, 28: run_query28, 29: run_query29, - # 30: run_query30, # Disabled: self-reply query + 30: run_query30, } diff --git a/ladybug/README.md b/ladybug/README.md index 05583e1..a0dc19c 100644 --- a/ladybug/README.md +++ b/ladybug/README.md @@ -49,54 +49,55 @@ The benchmark can be run using the following command. The results are output to ```bash ❯ uv run pytest benchmark_query.py --benchmark-min-rounds=5 --benchmark-warmup-iterations=5 --benchmark-disable-gc --benchmark-sort=fullname -==================================== test session starts ==================================== +============================================== test session starts =============================================== platform darwin -- Python 3.13.7, pytest-9.0.2, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=True min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=5) rootdir: /Users/prrao/code/graph-benchmark-ldbc-snb configfile: pyproject.toml plugins: anyio-4.12.1, benchmark-5.2.3, asyncio-1.3.0, Faker-40.1.2 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -collected 29 items - -benchmark_query.py ............................. [100%] - - ------------------------------------------------------------------------------------- benchmark: 29 tests ------------------------------------------------------------------------------------ -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 1.8044 (3.95) 2.5032 (3.28) 2.1343 (3.64) 0.2030 (3.91) 2.1173 (3.66) 0.2622 (3.94) 2;0 468.5304 (0.28) 9 1 -test_benchmark_query10 1.6774 (3.67) 2.4054 (3.15) 1.8847 (3.21) 0.1097 (2.12) 1.8566 (3.21) 0.0887 (1.33) 43;26 530.5890 (0.31) 222 1 -test_benchmark_query11 7.7475 (16.95) 9.7963 (12.84) 8.4255 (14.35) 0.4203 (8.10) 8.3458 (14.44) 0.6017 (9.04) 19;1 118.6875 (0.07) 70 1 -test_benchmark_query12 13.8958 (30.40) 25.3557 (33.23) 17.9320 (30.55) 3.3673 (64.90) 17.3610 (30.04) 4.9085 (73.77) 5;0 55.7661 (0.03) 15 1 -test_benchmark_query13 49.7707 (108.89) 53.6029 (70.25) 51.6189 (87.93) 1.1069 (21.34) 51.5523 (89.19) 1.7811 (26.77) 6;0 19.3727 (0.01) 18 1 -test_benchmark_query14 1.5683 (3.43) 2.0795 (2.73) 1.7862 (3.04) 0.1014 (1.95) 1.7830 (3.08) 0.1086 (1.63) 47;8 559.8506 (0.33) 166 1 -test_benchmark_query15 2.5371 (5.55) 3.0657 (4.02) 2.7445 (4.68) 0.1067 (2.06) 2.7192 (4.70) 0.1441 (2.17) 94;2 364.3696 (0.21) 287 1 -test_benchmark_query16 1.7841 (3.90) 2.2375 (2.93) 1.9878 (3.39) 0.0885 (1.71) 1.9645 (3.40) 0.1083 (1.63) 31;2 503.0593 (0.30) 111 1 -test_benchmark_query17 2.7363 (5.99) 3.3285 (4.36) 2.9439 (5.01) 0.1049 (2.02) 2.9275 (5.06) 0.1302 (1.96) 53;7 339.6853 (0.20) 195 1 -test_benchmark_query18 1.5109 (3.31) 2.0728 (2.72) 1.7591 (3.00) 0.1114 (2.15) 1.7465 (3.02) 0.1302 (1.96) 108;10 568.4831 (0.33) 364 1 -test_benchmark_query19 8.9326 (19.54) 25.3142 (33.18) 13.5881 (23.15) 3.9636 (76.40) 13.4727 (23.31) 5.1604 (77.55) 16;2 73.5940 (0.04) 51 1 -test_benchmark_query2 1.4232 (3.11) 1.7122 (2.24) 1.5402 (2.62) 0.0733 (1.41) 1.5451 (2.67) 0.1123 (1.69) 31;0 649.2788 (0.38) 80 1 -test_benchmark_query20 10.6083 (23.21) 11.8530 (15.53) 11.0800 (18.87) 0.2913 (5.62) 10.9818 (19.00) 0.3855 (5.79) 11;1 90.2523 (0.05) 35 1 -test_benchmark_query21 0.4571 (1.0) 0.7630 (1.0) 0.5870 (1.0) 0.0519 (1.0) 0.5780 (1.0) 0.0665 (1.0) 64;5 1,703.4466 (1.0) 230 1 -test_benchmark_query22 13.4663 (29.46) 34.2355 (44.87) 21.2265 (36.16) 5.2868 (101.90) 21.0171 (36.36) 7.4120 (111.39) 9;0 47.1110 (0.03) 35 1 -test_benchmark_query23 1.1985 (2.62) 1.7997 (2.36) 1.4394 (2.45) 0.0915 (1.76) 1.4320 (2.48) 0.1065 (1.60) 138;16 694.7496 (0.41) 533 1 -test_benchmark_query24 1.3111 (2.87) 1.9181 (2.51) 1.5519 (2.64) 0.0983 (1.89) 1.5502 (2.68) 0.1048 (1.57) 115;23 644.3509 (0.38) 427 1 -test_benchmark_query25 1.4066 (3.08) 2.0245 (2.65) 1.6663 (2.84) 0.1209 (2.33) 1.6566 (2.87) 0.1580 (2.37) 102;3 600.1376 (0.35) 313 1 -test_benchmark_query26 3.4069 (7.45) 4.3051 (5.64) 3.7920 (6.46) 0.1652 (3.18) 3.7772 (6.53) 0.2001 (3.01) 51;5 263.7113 (0.15) 173 1 -test_benchmark_query27 10.5538 (23.09) 29.3026 (38.40) 15.9964 (27.25) 3.2494 (62.63) 15.6882 (27.14) 2.0257 (30.44) 21;13 62.5142 (0.04) 80 1 -test_benchmark_query28 1.6201 (3.54) 4.9347 (6.47) 1.8973 (3.23) 0.1950 (3.76) 1.8752 (3.24) 0.1230 (1.85) 21;11 527.0702 (0.31) 328 1 -test_benchmark_query29 1.0778 (2.36) 1.6410 (2.15) 1.2739 (2.17) 0.1077 (2.08) 1.2562 (2.17) 0.1312 (1.97) 110;9 784.9653 (0.46) 347 1 -test_benchmark_query3 1.0852 (2.37) 1.6595 (2.17) 1.2498 (2.13) 0.1120 (2.16) 1.2205 (2.11) 0.1359 (2.04) 60;6 800.1028 (0.47) 188 1 -test_benchmark_query4 0.8708 (1.91) 3.2989 (4.32) 1.1177 (1.90) 0.3012 (5.81) 1.0608 (1.84) 0.1154 (1.73) 11;13 894.7101 (0.53) 309 1 -test_benchmark_query5 3.3633 (7.36) 4.0929 (5.36) 3.6133 (6.16) 0.1499 (2.89) 3.5938 (6.22) 0.1860 (2.80) 26;3 276.7576 (0.16) 88 1 -test_benchmark_query6 0.6934 (1.52) 3.2474 (4.26) 0.9060 (1.54) 0.2521 (4.86) 0.8504 (1.47) 0.1249 (1.88) 15;25 1,103.7735 (0.65) 433 1 -test_benchmark_query7 30.0759 (65.80) 32.6885 (42.84) 31.0633 (52.91) 0.5796 (11.17) 31.0890 (53.79) 0.7172 (10.78) 7;1 32.1923 (0.02) 27 1 -test_benchmark_query8 2.6225 (5.74) 3.1663 (4.15) 2.8395 (4.84) 0.1051 (2.03) 2.8276 (4.89) 0.1405 (2.11) 51;1 352.1775 (0.21) 160 1 -test_benchmark_query9 1.8821 (4.12) 5.0720 (6.65) 2.1572 (3.67) 0.2426 (4.68) 2.1129 (3.66) 0.1525 (2.29) 13;9 463.5698 (0.27) 208 1 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +collected 30 items + +benchmark_query.py .............................. [100%] + + +-------------------------------------------------------------------------------------- benchmark: 30 tests --------------------------------------------------------------------------------------- +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 1.9117 (3.97) 2.6705 (2.92) 2.1081 (3.60) 0.1874 (3.60) 2.0716 (3.62) 0.1117 (1.77) 2;1 474.3652 (0.28) 13 1 +test_benchmark_query10 1.7532 (3.64) 2.3283 (2.54) 1.9033 (3.25) 0.0817 (1.57) 1.8865 (3.30) 0.0914 (1.45) 49;6 525.4153 (0.31) 209 1 +test_benchmark_query11 7.7270 (16.05) 9.0004 (9.82) 8.1187 (13.86) 0.2107 (4.05) 8.1073 (14.18) 0.2738 (4.35) 19;2 123.1724 (0.07) 75 1 +test_benchmark_query12 14.1464 (29.38) 21.6140 (23.59) 16.9058 (28.86) 2.2256 (42.73) 16.5018 (28.87) 2.8348 (45.03) 4;0 59.1512 (0.03) 16 1 +test_benchmark_query13 49.6842 (103.20) 53.5551 (58.46) 51.5110 (87.92) 0.9531 (18.30) 51.4873 (90.07) 1.1535 (18.32) 5;0 19.4133 (0.01) 18 1 +test_benchmark_query14 1.6579 (3.44) 2.1268 (2.32) 1.8347 (3.13) 0.1053 (2.02) 1.8167 (3.18) 0.1391 (2.21) 41;4 545.0562 (0.32) 144 1 +test_benchmark_query15 2.5260 (5.25) 3.4298 (3.74) 2.7253 (4.65) 0.1335 (2.56) 2.6937 (4.71) 0.1512 (2.40) 55;11 366.9327 (0.21) 269 1 +test_benchmark_query16 1.8451 (3.83) 2.3163 (2.53) 1.9933 (3.40) 0.0831 (1.60) 1.9953 (3.49) 0.0946 (1.50) 21;2 501.6840 (0.29) 85 1 +test_benchmark_query17 2.7762 (5.77) 3.4865 (3.81) 2.9867 (5.10) 0.1106 (2.12) 2.9715 (5.20) 0.1347 (2.14) 46;4 334.8133 (0.20) 190 1 +test_benchmark_query18 1.6432 (3.41) 2.2382 (2.44) 1.8052 (3.08) 0.1070 (2.06) 1.7788 (3.11) 0.1249 (1.98) 85;17 553.9455 (0.32) 365 1 +test_benchmark_query19 9.4651 (19.66) 22.8702 (24.96) 14.1154 (24.09) 2.8611 (54.93) 13.5340 (23.67) 2.4370 (38.71) 15;4 70.8448 (0.04) 56 1 +test_benchmark_query2 1.2712 (2.64) 1.9603 (2.14) 1.4940 (2.55) 0.1408 (2.70) 1.5063 (2.63) 0.2294 (3.64) 24;1 669.3568 (0.39) 63 1 +test_benchmark_query20 10.7147 (22.26) 11.1838 (12.21) 10.9092 (18.62) 0.1331 (2.56) 10.8868 (19.04) 0.1968 (3.13) 10;0 91.6657 (0.05) 23 1 +test_benchmark_query21 0.4814 (1.0) 0.9161 (1.0) 0.5859 (1.0) 0.0645 (1.24) 0.5717 (1.0) 0.0630 (1.0) 50;13 1,706.8294 (1.0) 238 1 +test_benchmark_query22 14.2664 (29.63) 34.6549 (37.83) 22.2841 (38.04) 4.2106 (80.84) 22.6807 (39.67) 5.8241 (92.51) 14;1 44.8751 (0.03) 45 1 +test_benchmark_query23 1.3136 (2.73) 2.5025 (2.73) 1.5575 (2.66) 0.1299 (2.49) 1.5345 (2.68) 0.1553 (2.47) 134;12 642.0463 (0.38) 543 1 +test_benchmark_query24 1.3690 (2.84) 1.7574 (1.92) 1.5081 (2.57) 0.0657 (1.26) 1.4949 (2.61) 0.0830 (1.32) 141;12 663.1070 (0.39) 492 1 +test_benchmark_query25 1.4820 (3.08) 4.4241 (4.83) 1.7130 (2.92) 0.2880 (5.53) 1.6657 (2.91) 0.1128 (1.79) 11;18 583.7764 (0.34) 367 1 +test_benchmark_query26 3.4514 (7.17) 4.3842 (4.79) 3.5946 (6.14) 0.0929 (1.78) 3.5871 (6.27) 0.0974 (1.55) 48;4 278.1939 (0.16) 205 1 +test_benchmark_query27 10.1100 (21.00) 28.5882 (31.21) 15.4468 (26.36) 4.4585 (85.60) 15.2192 (26.62) 4.1056 (65.21) 13;6 64.7385 (0.04) 56 1 +test_benchmark_query28 1.6654 (3.46) 2.0297 (2.22) 1.8098 (3.09) 0.0583 (1.12) 1.8051 (3.16) 0.0761 (1.21) 168;7 552.5401 (0.32) 510 1 +test_benchmark_query29 1.0920 (2.27) 1.4700 (1.60) 1.2240 (2.09) 0.0611 (1.17) 1.2120 (2.12) 0.0751 (1.19) 96;10 816.9921 (0.48) 348 1 +test_benchmark_query3 1.1448 (2.38) 1.5808 (1.73) 1.2674 (2.16) 0.0824 (1.58) 1.2460 (2.18) 0.1025 (1.63) 52;6 789.0132 (0.46) 190 1 +test_benchmark_query30 144.2956 (299.73) 169.7094 (185.25) 154.3682 (263.48) 8.5969 (165.05) 153.8919 (269.20) 11.1298 (176.78) 2;0 6.4780 (0.00) 7 1 +test_benchmark_query4 0.9089 (1.89) 1.2413 (1.35) 1.0283 (1.76) 0.0521 (1.0) 1.0202 (1.78) 0.0631 (1.00) 88;7 972.4397 (0.57) 312 1 +test_benchmark_query5 3.4085 (7.08) 4.1252 (4.50) 3.6512 (6.23) 0.1165 (2.24) 3.6401 (6.37) 0.1328 (2.11) 21;2 273.8851 (0.16) 82 1 +test_benchmark_query6 0.7381 (1.53) 1.1139 (1.22) 0.8477 (1.45) 0.0634 (1.22) 0.8386 (1.47) 0.0798 (1.27) 106;6 1,179.6415 (0.69) 336 1 +test_benchmark_query7 29.5983 (61.48) 41.4377 (45.23) 31.5597 (53.87) 2.1364 (41.02) 30.9265 (54.10) 1.1964 (19.00) 2;2 31.6860 (0.02) 29 1 +test_benchmark_query8 2.7169 (5.64) 3.2915 (3.59) 2.8623 (4.89) 0.0910 (1.75) 2.8420 (4.97) 0.1151 (1.83) 39;3 349.3652 (0.20) 148 1 +test_benchmark_query9 1.9575 (4.07) 6.0546 (6.61) 2.2280 (3.80) 0.4422 (8.49) 2.1359 (3.74) 0.1619 (2.57) 5;7 448.8280 (0.26) 196 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean -==================================== 29 passed in 16.69s ==================================== +============================================== 30 passed in 18.23s =============================================== ``` \ No newline at end of file diff --git a/ladybug/benchmark_query.py b/ladybug/benchmark_query.py index 4697532..89cc7be 100644 --- a/ladybug/benchmark_query.py +++ b/ladybug/benchmark_query.py @@ -236,6 +236,6 @@ def test_benchmark_query29(benchmark, connection): _assert_single_value(result, "has_written_post_with_safari", False) -# def test_benchmark_query30(benchmark, connection): -# result = benchmark(query.run_query30, connection) -# _assert_single_value(result, "has_self_reply", True) +def test_benchmark_query30(benchmark, connection): + result = benchmark(query.run_query30, connection) + _assert_single_value(result, "has_self_reply", True) diff --git a/ladybug/query.py b/ladybug/query.py index d5f8626..81badf0 100644 --- a/ladybug/query.py +++ b/ladybug/query.py @@ -334,8 +334,8 @@ def run_query29(conn: Connection): def run_query30(conn: Connection): "Are there comments replying to posts created by the same person?" query = """ - MATCH (c:Comment)-[:commentHasCreator]->(p:Person) - <-[:postHasCreator]-(post:Post)<-[:replyOfPost]-(c) + MATCH (c:Comment)-[:commentHasCreator]->(creator:Person), + (c)-[:replyOfPost]->(post:Post)-[:postHasCreator]->(creator) RETURN COUNT(DISTINCT c.ID) > 0 AS has_self_reply; """ return _execute(conn, 30, query) @@ -371,7 +371,7 @@ def run_query30(conn: Connection): 27: run_query27, 28: run_query28, 29: run_query29, - # 30: run_query30, # Disabled: self-reply query + 30: run_query30, } diff --git a/lance_graph/README.md b/lance_graph/README.md index 8bd1c5d..f147d28 100644 --- a/lance_graph/README.md +++ b/lance_graph/README.md @@ -41,54 +41,55 @@ uv run query.py "1,2,6" ```bash ❯ uv run pytest benchmark_query.py --benchmark-min-rounds=5 --benchmark-warmup-iterations=5 --benchmark-disable-gc --benchmark-sort=fullname -============================================ test session starts ============================================= +============================================== test session starts =============================================== platform darwin -- Python 3.13.7, pytest-9.0.2, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=True min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=5) rootdir: /Users/prrao/code/graph-benchmark-ldbc-snb configfile: pyproject.toml plugins: anyio-4.12.1, benchmark-5.2.3, asyncio-1.3.0, Faker-40.1.2 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -collected 29 items +collected 30 items -benchmark_query.py ............................. [100%] +benchmark_query.py .............................. [100%] ------------------------------------------------------------------------------------- benchmark: 29 tests ------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------ benchmark: 30 tests ------------------------------------------------------------------------------------ Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 1.3767 (1.95) 1.7772 (1.68) 1.4724 (1.77) 0.0525 (1.37) 1.4636 (1.77) 0.0596 (1.18) 54;6 679.1737 (0.56) 232 1 -test_benchmark_query10 24.5189 (34.65) 26.1044 (24.74) 25.2219 (30.36) 0.3681 (9.62) 25.2228 (30.42) 0.5567 (11.05) 13;0 39.6482 (0.03) 39 1 -test_benchmark_query11 2.7414 (3.87) 4.0430 (3.83) 3.2230 (3.88) 0.2305 (6.02) 3.2217 (3.89) 0.2930 (5.82) 75;2 310.2685 (0.26) 229 1 -test_benchmark_query12 17.1755 (24.27) 18.3755 (17.41) 17.7318 (21.35) 0.2483 (6.49) 17.6685 (21.31) 0.2672 (5.30) 14;4 56.3959 (0.05) 58 1 -test_benchmark_query13 8.3278 (11.77) 9.9391 (9.42) 8.6597 (10.43) 0.2016 (5.27) 8.6350 (10.41) 0.2352 (4.67) 22;1 115.4775 (0.10) 110 1 -test_benchmark_query14 2.5917 (3.66) 3.2937 (3.12) 2.7956 (3.37) 0.1052 (2.75) 2.7737 (3.34) 0.1003 (1.99) 61;17 357.7025 (0.30) 318 1 -test_benchmark_query15 2.1405 (3.02) 2.8080 (2.66) 2.2776 (2.74) 0.0736 (1.92) 2.2651 (2.73) 0.0787 (1.56) 84;13 439.0494 (0.36) 403 1 -test_benchmark_query16 3.9124 (5.53) 5.2454 (4.97) 4.2132 (5.07) 0.1204 (3.14) 4.2151 (5.08) 0.1292 (2.56) 45;3 237.3504 (0.20) 234 1 -test_benchmark_query17 2.4369 (3.44) 2.9189 (2.77) 2.5873 (3.11) 0.0704 (1.84) 2.5801 (3.11) 0.0785 (1.56) 82;13 386.5047 (0.32) 339 1 -test_benchmark_query18 1.8815 (2.66) 2.3139 (2.19) 2.0325 (2.45) 0.0625 (1.63) 2.0295 (2.45) 0.0839 (1.67) 131;7 492.0153 (0.41) 455 1 -test_benchmark_query19 18.4428 (26.06) 19.6378 (18.61) 18.9444 (22.81) 0.2700 (7.05) 18.9392 (22.84) 0.3506 (6.96) 16;1 52.7861 (0.04) 52 1 -test_benchmark_query2 2.0713 (2.93) 2.5650 (2.43) 2.3162 (2.79) 0.0817 (2.13) 2.3036 (2.78) 0.1143 (2.27) 121;2 431.7420 (0.36) 389 1 -test_benchmark_query20 2.1316 (3.01) 2.9786 (2.82) 2.3992 (2.89) 0.1500 (3.92) 2.3583 (2.84) 0.1600 (3.18) 85;26 416.8106 (0.35) 368 1 -test_benchmark_query21 1.5456 (2.18) 1.9687 (1.87) 1.6820 (2.02) 0.0697 (1.82) 1.6773 (2.02) 0.0838 (1.66) 103;14 594.5466 (0.49) 398 1 -test_benchmark_query22 12.1362 (17.15) 12.8211 (12.15) 12.4648 (15.01) 0.1629 (4.26) 12.4526 (15.02) 0.2373 (4.71) 26;0 80.2257 (0.07) 78 1 -test_benchmark_query23 2.4816 (3.51) 3.0308 (2.87) 2.6765 (3.22) 0.0765 (2.00) 2.6667 (3.22) 0.0908 (1.80) 96;7 373.6270 (0.31) 332 1 -test_benchmark_query24 1.8614 (2.63) 2.2366 (2.12) 1.9925 (2.40) 0.0576 (1.50) 1.9885 (2.40) 0.0692 (1.37) 124;9 501.8797 (0.42) 440 1 -test_benchmark_query25 1.3479 (1.90) 1.8455 (1.75) 1.4648 (1.76) 0.0465 (1.22) 1.4623 (1.76) 0.0584 (1.16) 175;4 682.6643 (0.57) 611 1 -test_benchmark_query26 2.8840 (4.08) 3.4320 (3.25) 3.1116 (3.75) 0.0938 (2.45) 3.1040 (3.74) 0.1305 (2.59) 93;3 321.3729 (0.27) 316 1 -test_benchmark_query27 22.4221 (31.69) 23.7178 (22.48) 23.0234 (27.72) 0.3001 (7.84) 23.0482 (27.79) 0.4085 (8.11) 14;0 43.4341 (0.04) 42 1 -test_benchmark_query28 2.6678 (3.77) 3.3802 (3.20) 2.8639 (3.45) 0.1074 (2.80) 2.8417 (3.43) 0.1035 (2.05) 62;16 349.1685 (0.29) 301 1 -test_benchmark_query29 2.4007 (3.39) 3.0182 (2.86) 2.6757 (3.22) 0.0928 (2.42) 2.6743 (3.23) 0.1226 (2.43) 118;5 373.7399 (0.31) 383 1 -test_benchmark_query3 3.1942 (4.51) 3.8568 (3.65) 3.3852 (4.08) 0.0895 (2.34) 3.3731 (4.07) 0.1102 (2.19) 75;4 295.4012 (0.25) 255 1 -test_benchmark_query4 2.8370 (4.01) 3.6791 (3.49) 3.1119 (3.75) 0.1136 (2.97) 3.1145 (3.76) 0.1467 (2.91) 96;2 321.3500 (0.27) 309 1 -test_benchmark_query5 1.8461 (2.61) 2.3278 (2.21) 2.1083 (2.54) 0.0858 (2.24) 2.1098 (2.54) 0.1243 (2.47) 128;3 474.3254 (0.39) 403 1 -test_benchmark_query6 0.7076 (1.0) 1.0553 (1.0) 0.8306 (1.0) 0.0383 (1.0) 0.8292 (1.0) 0.0504 (1.0) 273;10 1,203.8883 (1.0) 944 1 -test_benchmark_query7 12.7920 (18.08) 13.8115 (13.09) 13.2379 (15.94) 0.2134 (5.57) 13.1735 (15.89) 0.2816 (5.59) 21;1 75.5406 (0.06) 73 1 -test_benchmark_query8 1.1148 (1.58) 1.4808 (1.40) 1.2611 (1.52) 0.0517 (1.35) 1.2631 (1.52) 0.0723 (1.44) 191;4 792.9300 (0.66) 602 1 -test_benchmark_query9 2.0159 (2.85) 2.5005 (2.37) 2.1874 (2.63) 0.0663 (1.73) 2.1839 (2.63) 0.0880 (1.75) 127;3 457.1621 (0.38) 423 1 +test_benchmark_query1 1.4880 (2.00) 1.7510 (1.70) 1.5913 (1.88) 0.0707 (1.82) 1.5808 (1.87) 0.1047 (2.05) 6;0 628.4261 (0.53) 20 1 +test_benchmark_query10 24.5643 (33.03) 26.1123 (25.41) 25.2822 (29.88) 0.3587 (9.22) 25.2022 (29.84) 0.5195 (10.18) 10;0 39.5535 (0.03) 39 1 +test_benchmark_query11 2.9605 (3.98) 4.1125 (4.00) 3.3338 (3.94) 0.2158 (5.55) 3.3298 (3.94) 0.3030 (5.94) 31;2 299.9581 (0.25) 98 1 +test_benchmark_query12 17.3072 (23.28) 18.8930 (18.39) 18.0033 (21.28) 0.3471 (8.92) 17.9671 (21.27) 0.4776 (9.36) 14;0 55.5453 (0.05) 50 1 +test_benchmark_query13 8.3172 (11.19) 12.7550 (12.41) 8.8557 (10.47) 0.7152 (18.38) 8.6996 (10.30) 0.2604 (5.10) 6;8 112.9218 (0.10) 105 1 +test_benchmark_query14 2.6341 (3.54) 9.8257 (9.56) 2.8916 (3.42) 0.5145 (13.22) 2.8136 (3.33) 0.1835 (3.60) 5;13 345.8292 (0.29) 314 1 +test_benchmark_query15 2.1769 (2.93) 2.5593 (2.49) 2.3119 (2.73) 0.0629 (1.62) 2.3029 (2.73) 0.0816 (1.60) 117;7 432.5516 (0.37) 398 1 +test_benchmark_query16 3.9541 (5.32) 17.1901 (16.73) 4.4465 (5.25) 0.9964 (25.61) 4.2662 (5.05) 0.2572 (5.04) 4;22 224.8946 (0.19) 196 1 +test_benchmark_query17 2.4389 (3.28) 3.4308 (3.34) 2.7018 (3.19) 0.1502 (3.86) 2.6657 (3.16) 0.1760 (3.45) 72;5 370.1262 (0.31) 263 1 +test_benchmark_query18 1.9281 (2.59) 9.6172 (9.36) 2.1926 (2.59) 0.6380 (16.40) 2.0884 (2.47) 0.1196 (2.34) 10;43 456.0866 (0.39) 464 1 +test_benchmark_query19 18.6085 (25.03) 20.2367 (19.70) 19.2952 (22.80) 0.4137 (10.63) 19.2328 (22.77) 0.6143 (12.03) 14;0 51.8264 (0.04) 51 1 +test_benchmark_query2 2.0981 (2.82) 2.9451 (2.87) 2.3721 (2.80) 0.1214 (3.12) 2.3592 (2.79) 0.1106 (2.17) 53;16 421.5694 (0.36) 207 1 +test_benchmark_query20 2.1109 (2.84) 3.1520 (3.07) 2.5914 (3.06) 0.2243 (5.76) 2.5667 (3.04) 0.3413 (6.69) 102;0 385.8904 (0.33) 285 1 +test_benchmark_query21 1.5824 (2.13) 2.0726 (2.02) 1.7486 (2.07) 0.0974 (2.50) 1.7318 (2.05) 0.1115 (2.18) 19;2 571.8983 (0.48) 64 1 +test_benchmark_query22 12.3993 (16.67) 26.4168 (25.71) 13.6543 (16.14) 2.5838 (66.41) 12.9595 (15.34) 0.5255 (10.30) 4;9 73.2369 (0.06) 72 1 +test_benchmark_query23 2.5095 (3.37) 3.3880 (3.30) 2.7454 (3.24) 0.1453 (3.73) 2.7139 (3.21) 0.1331 (2.61) 67;23 364.2406 (0.31) 312 1 +test_benchmark_query24 1.8287 (2.46) 2.3992 (2.34) 1.9825 (2.34) 0.0662 (1.70) 1.9785 (2.34) 0.0714 (1.40) 78;8 504.4231 (0.43) 313 1 +test_benchmark_query25 1.3210 (1.78) 1.6379 (1.59) 1.4607 (1.73) 0.0466 (1.20) 1.4606 (1.73) 0.0582 (1.14) 186;8 684.5953 (0.58) 628 1 +test_benchmark_query26 2.8380 (3.82) 3.8140 (3.71) 3.0986 (3.66) 0.1412 (3.63) 3.0721 (3.64) 0.1485 (2.91) 67;10 322.7225 (0.27) 293 1 +test_benchmark_query27 22.3448 (30.05) 23.8053 (23.17) 23.0160 (27.20) 0.2981 (7.66) 23.0332 (27.27) 0.3432 (6.72) 10;2 43.4480 (0.04) 43 1 +test_benchmark_query28 2.6078 (3.51) 3.0987 (3.02) 2.7874 (3.29) 0.0866 (2.23) 2.7748 (3.29) 0.1139 (2.23) 77;7 358.7552 (0.30) 305 1 +test_benchmark_query29 2.4340 (3.27) 6.4821 (6.31) 2.6923 (3.18) 0.2189 (5.63) 2.6807 (3.17) 0.1056 (2.07) 10;12 371.4282 (0.31) 362 1 +test_benchmark_query3 3.1701 (4.26) 4.7527 (4.63) 3.3894 (4.01) 0.1563 (4.02) 3.3644 (3.98) 0.1318 (2.58) 30;11 295.0366 (0.25) 185 1 +test_benchmark_query30 30.4550 (40.96) 32.1223 (31.26) 31.2980 (36.99) 0.3605 (9.26) 31.3224 (37.08) 0.3275 (6.42) 10;3 31.9510 (0.03) 32 1 +test_benchmark_query4 2.9182 (3.92) 3.4547 (3.36) 3.1160 (3.68) 0.1073 (2.76) 3.1019 (3.67) 0.1349 (2.64) 62;4 320.9208 (0.27) 205 1 +test_benchmark_query5 1.8660 (2.51) 2.5484 (2.48) 2.1055 (2.49) 0.0893 (2.29) 2.1014 (2.49) 0.1063 (2.08) 66;8 474.9472 (0.40) 243 1 +test_benchmark_query6 0.7436 (1.0) 1.0275 (1.0) 0.8462 (1.0) 0.0389 (1.0) 0.8447 (1.0) 0.0510 (1.0) 321;15 1,181.7965 (1.0) 1091 1 +test_benchmark_query7 12.8149 (17.23) 14.5070 (14.12) 13.3133 (15.73) 0.3028 (7.78) 13.2999 (15.75) 0.3600 (7.05) 18;3 75.1126 (0.06) 67 1 +test_benchmark_query8 1.1346 (1.53) 1.5817 (1.54) 1.2828 (1.52) 0.0620 (1.59) 1.2793 (1.51) 0.0749 (1.47) 72;7 779.5587 (0.66) 263 1 +test_benchmark_query9 1.9952 (2.68) 2.4711 (2.40) 2.1742 (2.57) 0.0745 (1.91) 2.1683 (2.57) 0.0879 (1.72) 114;15 459.9466 (0.39) 416 1 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean -============================================ 29 passed in 27.64s ============================================= +======================================= 30 passed in 25.64s ======================================= ``` \ No newline at end of file diff --git a/lance_graph/benchmark_query.py b/lance_graph/benchmark_query.py index 1621e32..1356a8b 100644 --- a/lance_graph/benchmark_query.py +++ b/lance_graph/benchmark_query.py @@ -239,6 +239,6 @@ def test_benchmark_query29(benchmark, engine): _assert_single_value(result, "has_written_post_with_safari", False) -# def test_benchmark_query30(benchmark, engine): -# result = benchmark(query.run_query30, engine) -# _assert_single_value(result, "has_self_reply", True) +def test_benchmark_query30(benchmark, engine): + result = benchmark(query.run_query30, engine) + _assert_single_value(result, "has_self_reply", True) diff --git a/lance_graph/query.py b/lance_graph/query.py index 4a85f1f..5b103ed 100644 --- a/lance_graph/query.py +++ b/lance_graph/query.py @@ -507,10 +507,9 @@ def run_query29(engine: CypherEngine) -> pl.DataFrame: def run_query30(engine: CypherEngine) -> pl.DataFrame: "Are there comments replying to posts created by the same person?" query = """ - MATCH (c1:Comment)-[:commentHasCreator]->(p:Person) - <-[:postHasCreator]-(post:Post)<-[:replyOfPost]-(c2:Comment) - WHERE c1.id = c2.id - RETURN COUNT(DISTINCT c1.id) AS has_self_reply + MATCH (c:Comment)-[:commentHasCreator]->(creator:Person), + (c)-[:replyOfPost]->(post:Post)-[:postHasCreator]->(creator) + RETURN COUNT(DISTINCT c.ID) AS has_self_reply """ return _execute_count_as_bool( engine, @@ -551,7 +550,7 @@ def run_query30(engine: CypherEngine) -> pl.DataFrame: 27: run_query27, 28: run_query28, 29: run_query29, - # 30: run_query30, # Disabled: self-reply query + 30: run_query30, } diff --git a/neo4j/README.md b/neo4j/README.md index f6bb962..9217faf 100644 --- a/neo4j/README.md +++ b/neo4j/README.md @@ -52,54 +52,55 @@ systems. ```bash ❯ uv run pytest benchmark_query.py --benchmark-min-rounds=5 --benchmark-warmup-iterations=5 --benchmark-disable-gc --benchmark-sort=fullname -==================================== test session starts ==================================== +=========================================== test session starts =========================================== platform darwin -- Python 3.13.7, pytest-9.0.2, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=True min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=5) rootdir: /Users/prrao/code/graph-benchmark-ldbc-snb configfile: pyproject.toml plugins: anyio-4.12.1, benchmark-5.2.3, asyncio-1.3.0, Faker-40.1.2 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -collected 29 items - -benchmark_query.py ............................. [100%] - - --------------------------------------------------------------------------------------- benchmark: 29 tests -------------------------------------------------------------------------------------- -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 4.5662 (4.07) 7.9165 (2.15) 5.7428 (3.78) 1.2804 (2.71) 5.3974 (3.84) 1.1992 (6.12) 1;0 174.1311 (0.26) 5 1 -test_benchmark_query10 4.3096 (3.85) 7.6700 (2.08) 4.9036 (3.23) 0.8107 (1.72) 4.5665 (3.25) 0.3377 (1.72) 3;3 203.9318 (0.31) 21 1 -test_benchmark_query11 11.3090 (10.09) 16.4480 (4.46) 12.9206 (8.51) 1.7023 (3.61) 12.1890 (8.68) 2.8055 (14.32) 2;0 77.3955 (0.12) 14 1 -test_benchmark_query12 3.4635 (3.09) 6.5704 (1.78) 4.6609 (3.07) 1.1609 (2.46) 4.4706 (3.18) 1.1712 (5.98) 2;0 214.5527 (0.33) 5 1 -test_benchmark_query13 7.6419 (6.82) 10.2188 (2.77) 8.7770 (5.78) 0.9356 (1.98) 8.5917 (6.12) 0.9677 (4.94) 2;0 113.9337 (0.17) 5 1 -test_benchmark_query14 1.1795 (1.05) 4.0575 (1.10) 1.5923 (1.05) 0.5706 (1.21) 1.4067 (1.00) 0.2915 (1.49) 4;4 628.0120 (0.95) 35 1 -test_benchmark_query15 2.7099 (2.42) 5.9078 (1.60) 3.2335 (2.13) 0.5319 (1.13) 3.1391 (2.23) 0.2711 (1.38) 2;2 309.2583 (0.47) 33 1 -test_benchmark_query16 1.4991 (1.34) 4.2685 (1.16) 1.9887 (1.31) 0.5715 (1.21) 1.8387 (1.31) 0.4499 (2.30) 3;2 502.8378 (0.76) 27 1 -test_benchmark_query17 3.6983 (3.30) 16.9161 (4.59) 5.2950 (3.49) 3.1083 (6.59) 4.1400 (2.95) 0.7694 (3.93) 2;3 188.8588 (0.29) 21 1 -test_benchmark_query18 3.6140 (3.23) 6.8964 (1.87) 4.0790 (2.69) 0.6890 (1.46) 3.9085 (2.78) 0.2310 (1.18) 2;3 245.1596 (0.37) 22 1 -test_benchmark_query19 5.3842 (4.80) 8.9943 (2.44) 6.1461 (4.05) 1.5929 (3.38) 5.4534 (3.88) 0.9807 (5.00) 1;1 162.7046 (0.25) 5 1 -test_benchmark_query2 5.5077 (4.92) 7.7213 (2.09) 6.4048 (4.22) 0.8509 (1.80) 6.0194 (4.28) 1.5655 (7.99) 4;0 156.1333 (0.24) 9 1 -test_benchmark_query20 400.9177 (357.78) 463.1863 (125.58) 421.8090 (277.94) 24.5619 (52.06) 412.9683 (293.94) 27.1205 (138.38) 1;0 2.3707 (0.00) 5 1 -test_benchmark_query21 1.2233 (1.09) 4.1606 (1.13) 1.5734 (1.04) 0.5670 (1.20) 1.4747 (1.05) 0.1960 (1.0) 1;2 635.5555 (0.96) 25 1 -test_benchmark_query22 3.2502 (2.90) 5.2348 (1.42) 3.6827 (2.43) 0.7463 (1.58) 3.3378 (2.38) 0.6475 (3.30) 1;1 271.5424 (0.41) 7 1 -test_benchmark_query23 3.2370 (2.89) 6.6556 (1.80) 4.0356 (2.66) 0.8064 (1.71) 3.9351 (2.80) 0.7647 (3.90) 4;2 247.7977 (0.38) 25 1 -test_benchmark_query24 1.1206 (1.0) 4.0367 (1.09) 1.5177 (1.0) 0.4718 (1.0) 1.4050 (1.0) 0.3551 (1.81) 1;1 658.9131 (1.0) 37 1 -test_benchmark_query25 2.6251 (2.34) 5.6793 (1.54) 3.0771 (2.03) 0.6817 (1.44) 2.8469 (2.03) 0.3698 (1.89) 3;3 324.9813 (0.49) 25 1 -test_benchmark_query26 1.2396 (1.11) 3.6884 (1.0) 1.7845 (1.18) 0.5056 (1.07) 1.7100 (1.22) 0.3985 (2.03) 5;2 560.3905 (0.85) 25 1 -test_benchmark_query27 2.6475 (2.36) 5.5377 (1.50) 3.3515 (2.21) 1.0913 (2.31) 2.8824 (2.05) 0.4261 (2.17) 1;1 298.3708 (0.45) 6 1 -test_benchmark_query28 3.0628 (2.73) 6.0044 (1.63) 4.3319 (2.85) 1.2427 (2.63) 3.6485 (2.60) 2.2453 (11.46) 3;0 230.8469 (0.35) 8 1 -test_benchmark_query29 2.5316 (2.26) 5.5024 (1.49) 3.0835 (2.03) 0.4901 (1.04) 2.9675 (2.11) 0.3126 (1.60) 6;3 324.3094 (0.49) 39 1 -test_benchmark_query3 1.9932 (1.78) 6.7290 (1.82) 2.7822 (1.83) 1.1888 (2.52) 2.4327 (1.73) 0.5806 (2.96) 1;1 359.4313 (0.55) 14 1 -test_benchmark_query4 4.1825 (3.73) 7.5235 (2.04) 4.8082 (3.17) 0.7715 (1.64) 4.5888 (3.27) 0.5105 (2.60) 2;2 207.9802 (0.32) 18 1 -test_benchmark_query5 4.5011 (4.02) 6.3177 (1.71) 5.0708 (3.34) 0.6389 (1.35) 4.8507 (3.45) 0.2684 (1.37) 1;1 197.2073 (0.30) 6 1 -test_benchmark_query6 3.3081 (2.95) 6.7625 (1.83) 4.1487 (2.73) 0.7289 (1.54) 3.9722 (2.83) 0.4310 (2.20) 4;3 241.0393 (0.37) 21 1 -test_benchmark_query7 1.6739 (1.49) 5.2899 (1.43) 2.1989 (1.45) 1.0538 (2.23) 1.7943 (1.28) 0.5013 (2.56) 1;1 454.7639 (0.69) 11 1 -test_benchmark_query8 13.4295 (11.98) 17.6011 (4.77) 15.5802 (10.27) 1.7500 (3.71) 15.4720 (11.01) 3.4450 (17.58) 5;0 64.1840 (0.10) 9 1 -test_benchmark_query9 1.9796 (1.77) 5.6878 (1.54) 2.6149 (1.72) 0.9271 (1.97) 2.2784 (1.62) 0.5254 (2.68) 2;2 382.4230 (0.58) 19 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +collected 30 items + +benchmark_query.py .............................. [100%] + + +------------------------------------------------------------------------------------------ benchmark: 30 tests ------------------------------------------------------------------------------------------ +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 3.8717 (3.18) 7.4454 (1.97) 4.8933 (2.98) 1.4850 (3.61) 4.2990 (2.72) 1.6227 (9.69) 1;0 204.3628 (0.34) 5 1 +test_benchmark_query10 4.1303 (3.39) 7.1820 (1.90) 4.9262 (3.00) 0.6567 (1.60) 4.8589 (3.08) 0.6227 (3.72) 3;1 202.9957 (0.33) 19 1 +test_benchmark_query11 12.9360 (10.62) 18.0553 (4.79) 14.9252 (9.08) 1.6719 (4.06) 14.4897 (9.18) 2.7231 (16.26) 5;0 67.0007 (0.11) 12 1 +test_benchmark_query12 5.6573 (4.64) 14.3229 (3.80) 8.0887 (4.92) 3.5239 (8.56) 6.7725 (4.29) 2.4496 (14.62) 1;1 123.6298 (0.20) 5 1 +test_benchmark_query13 8.3255 (6.83) 13.8492 (3.67) 9.8533 (6.00) 2.2754 (5.53) 8.8053 (5.58) 1.9628 (11.72) 1;1 101.4885 (0.17) 5 1 +test_benchmark_query14 1.2736 (1.05) 4.3214 (1.15) 1.6888 (1.03) 0.5472 (1.33) 1.6169 (1.02) 0.3128 (1.87) 2;2 592.1243 (0.97) 31 1 +test_benchmark_query15 2.8993 (2.38) 5.9215 (1.57) 3.3052 (2.01) 0.5641 (1.37) 3.2112 (2.04) 0.2019 (1.21) 2;3 302.5522 (0.50) 28 1 +test_benchmark_query16 1.8147 (1.49) 5.0642 (1.34) 2.4007 (1.46) 0.6697 (1.63) 2.2750 (1.44) 0.4678 (2.79) 2;2 416.5537 (0.68) 24 1 +test_benchmark_query17 3.3443 (2.75) 16.6362 (4.41) 4.9384 (3.01) 3.3127 (8.05) 3.7099 (2.35) 0.8293 (4.95) 2;3 202.4931 (0.33) 19 1 +test_benchmark_query18 3.2864 (2.70) 6.3495 (1.68) 3.6899 (2.25) 0.6538 (1.59) 3.5115 (2.23) 0.2724 (1.63) 2;2 271.0126 (0.45) 22 1 +test_benchmark_query19 5.6897 (4.67) 15.6924 (4.16) 7.7676 (4.73) 4.4306 (10.77) 5.8476 (3.71) 2.5726 (15.36) 1;1 128.7393 (0.21) 5 1 +test_benchmark_query2 4.6268 (3.80) 7.5288 (2.00) 5.9006 (3.59) 0.9334 (2.27) 5.8460 (3.71) 1.0465 (6.25) 3;0 169.4754 (0.28) 9 1 +test_benchmark_query20 433.0199 (355.47) 599.6303 (158.94) 475.7287 (289.49) 70.1786 (170.56) 451.5764 (286.20) 60.4575 (360.94) 1;1 2.1020 (0.00) 5 1 +test_benchmark_query21 1.2413 (1.02) 4.1425 (1.10) 1.8157 (1.10) 0.6634 (1.61) 1.6061 (1.02) 0.2651 (1.58) 2;3 550.7550 (0.91) 24 1 +test_benchmark_query22 3.0699 (2.52) 6.0628 (1.61) 3.6491 (2.22) 1.0811 (2.63) 3.1857 (2.02) 0.4395 (2.62) 1;1 274.0428 (0.45) 7 1 +test_benchmark_query23 3.1808 (2.61) 6.2377 (1.65) 3.9493 (2.40) 0.7700 (1.87) 3.6955 (2.34) 0.3280 (1.96) 5;5 253.2080 (0.42) 26 1 +test_benchmark_query24 1.2182 (1.0) 3.7727 (1.0) 1.6434 (1.0) 0.4115 (1.0) 1.5779 (1.0) 0.1933 (1.15) 5;3 608.5094 (1.0) 36 1 +test_benchmark_query25 2.4818 (2.04) 5.5808 (1.48) 3.0793 (1.87) 0.6214 (1.51) 3.0067 (1.91) 0.4830 (2.88) 2;2 324.7485 (0.53) 26 1 +test_benchmark_query26 1.4263 (1.17) 4.1306 (1.09) 1.8218 (1.11) 0.5590 (1.36) 1.6973 (1.08) 0.2476 (1.48) 2;2 548.9102 (0.90) 24 1 +test_benchmark_query27 2.4140 (1.98) 6.7904 (1.80) 3.5443 (2.16) 1.6484 (4.01) 3.0405 (1.93) 1.1359 (6.78) 1;1 282.1438 (0.46) 6 1 +test_benchmark_query28 2.6972 (2.21) 5.7863 (1.53) 3.9115 (2.38) 1.1912 (2.90) 3.2406 (2.05) 1.8656 (11.14) 3;0 255.6591 (0.42) 7 1 +test_benchmark_query29 2.6210 (2.15) 6.2340 (1.65) 2.9144 (1.77) 0.5743 (1.40) 2.8131 (1.78) 0.1810 (1.08) 1;2 343.1289 (0.56) 38 1 +test_benchmark_query3 2.2591 (1.85) 6.8616 (1.82) 2.9493 (1.79) 1.2008 (2.92) 2.5070 (1.59) 0.4899 (2.92) 1;1 339.0627 (0.56) 14 1 +test_benchmark_query30 1,213.2225 (995.94) 1,350.6868 (358.01) 1,255.1823 (763.79) 55.0428 (133.77) 1,234.8569 (782.62) 51.8661 (309.65) 1;0 0.7967 (0.00) 5 1 +test_benchmark_query4 3.5955 (2.95) 6.8703 (1.82) 4.1218 (2.51) 0.7246 (1.76) 3.8414 (2.43) 0.4304 (2.57) 1;1 242.6149 (0.40) 19 1 +test_benchmark_query5 4.1471 (3.40) 5.9247 (1.57) 4.8703 (2.96) 0.8128 (1.98) 4.4418 (2.82) 1.5192 (9.07) 2;0 205.3253 (0.34) 6 1 +test_benchmark_query6 2.9778 (2.44) 6.0410 (1.60) 3.8818 (2.36) 0.6363 (1.55) 3.6772 (2.33) 0.4742 (2.83) 4;2 257.6104 (0.42) 22 1 +test_benchmark_query7 1.6695 (1.37) 5.1811 (1.37) 2.2006 (1.34) 0.9576 (2.33) 1.9172 (1.22) 0.2810 (1.68) 1;1 454.4178 (0.75) 12 1 +test_benchmark_query8 11.7353 (9.63) 18.6258 (4.94) 14.5516 (8.85) 2.4514 (5.96) 14.0285 (8.89) 4.5380 (27.09) 3;0 68.7208 (0.11) 9 1 +test_benchmark_query9 2.0752 (1.70) 6.4517 (1.71) 2.8203 (1.72) 1.0421 (2.53) 2.4998 (1.58) 0.1675 (1.0) 2;4 354.5747 (0.58) 18 1 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean -==================================== 29 passed in 13.19s ==================================== +=========================================== 30 passed in 23.96s =========================================== ``` diff --git a/neo4j/benchmark_query.py b/neo4j/benchmark_query.py index ea0da2c..c4d31df 100644 --- a/neo4j/benchmark_query.py +++ b/neo4j/benchmark_query.py @@ -262,6 +262,6 @@ def test_benchmark_query29(benchmark, session, event_loop): _assert_single_value(result, "has_written_post_with_safari", False) -# def test_benchmark_query30(benchmark, session, event_loop): -# result = benchmark(lambda: _run(event_loop, query.run_query30(session))) -# _assert_single_value(result, "has_self_reply", True) +def test_benchmark_query30(benchmark, session, event_loop): + result = benchmark(lambda: _run(event_loop, query.run_query30(session))) + _assert_single_value(result, "has_self_reply", True) diff --git a/neo4j/query.py b/neo4j/query.py index 9741d8f..7df1679 100644 --- a/neo4j/query.py +++ b/neo4j/query.py @@ -343,8 +343,8 @@ async def run_query29(session: AsyncSession): async def run_query30(session: AsyncSession): "Are there comments replying to posts created by the same person?" query = """ - MATCH (c:Comment)-[:commentHasCreator]->(p:Person) - <-[:postHasCreator]-(post:Post)<-[:replyOfPost]-(c) + MATCH (c:Comment)-[:commentHasCreator]->(creator:Person), + (c)-[:replyOfPost]->(post:Post)-[:postHasCreator]->(creator) RETURN COUNT(DISTINCT c.ID) > 0 AS has_self_reply; """ return await _execute(session, 30, query) @@ -380,7 +380,7 @@ async def run_query30(session: AsyncSession): 27: run_query27, 28: run_query28, 29: run_query29, - # 30: run_query30, # Disabled: self-reply query + 30: run_query30, } diff --git a/results/lance-graph-0.5.1.txt b/results/archived/lance-graph-0.5.1.txt similarity index 100% rename from results/lance-graph-0.5.1.txt rename to results/archived/lance-graph-0.5.1.txt diff --git a/results/benchmark_heatmap.png b/results/benchmark_heatmap.png index 3b9de45ac462476d54be5d6c7469567577f36a9b..0694767b3c00b513dc5a541ad1311db26e479be6 100644 GIT binary patch literal 133187 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:rp^4?uot8F)Z&8q9 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

Gy!MThAF6M8H}yJ0hTlG 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 z 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%0ARL(k|Py5f5WSa&x# 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 Je~p|j{14p&Tgm_c diff --git a/results/kuzu-0.11.3.txt b/results/kuzu-0.11.3.txt index eb72922..d144b5f 100644 --- a/results/kuzu-0.11.3.txt +++ b/results/kuzu-0.11.3.txt @@ -1,33 +1,34 @@ ------------------------------------------------------------------------------------- benchmark: 29 tests ------------------------------------------------------------------------------------ -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 2.2577 (4.66) 2.6252 (3.30) 2.3674 (4.00) 0.1256 (2.17) 2.3013 (3.96) 0.1035 (1.40) 1;1 422.4013 (0.25) 7 1 -test_benchmark_query10 1.5427 (3.19) 2.1656 (2.73) 1.7854 (3.02) 0.1151 (1.99) 1.7797 (3.07) 0.1413 (1.91) 68;2 560.0853 (0.33) 219 1 -test_benchmark_query11 7.6476 (15.80) 8.9412 (11.25) 8.0510 (13.61) 0.2907 (5.01) 8.0069 (13.79) 0.3396 (4.59) 20;5 124.2076 (0.07) 76 1 -test_benchmark_query12 14.4927 (29.94) 27.4369 (34.53) 18.3637 (31.05) 3.8226 (65.95) 16.2928 (28.07) 5.7663 (78.01) 4;0 54.4552 (0.03) 15 1 -test_benchmark_query13 48.4199 (100.02) 51.4664 (64.77) 50.2393 (84.96) 0.8729 (15.06) 50.3359 (86.72) 1.4880 (20.13) 7;0 19.9047 (0.01) 18 1 -test_benchmark_query14 1.4160 (2.92) 1.9150 (2.41) 1.6599 (2.81) 0.1091 (1.88) 1.6518 (2.85) 0.1297 (1.75) 51;1 602.4426 (0.36) 155 1 -test_benchmark_query15 2.4607 (5.08) 3.2792 (4.13) 2.6984 (4.56) 0.1264 (2.18) 2.6811 (4.62) 0.1637 (2.21) 86;5 370.5902 (0.22) 278 1 -test_benchmark_query16 1.7999 (3.72) 2.1456 (2.70) 1.9558 (3.31) 0.0769 (1.33) 1.9431 (3.35) 0.1080 (1.46) 36;0 511.3071 (0.30) 102 1 -test_benchmark_query17 2.7153 (5.61) 3.4063 (4.29) 2.9574 (5.00) 0.1463 (2.52) 2.9277 (5.04) 0.1782 (2.41) 46;9 338.1399 (0.20) 184 1 -test_benchmark_query18 1.4720 (3.04) 7.3080 (9.20) 1.7397 (2.94) 0.3661 (6.32) 1.6984 (2.93) 0.1279 (1.73) 5;10 574.8125 (0.34) 383 1 -test_benchmark_query19 8.9191 (18.42) 23.9760 (30.18) 13.2692 (22.44) 3.6640 (63.22) 12.7555 (21.98) 4.3972 (59.49) 14;2 75.3626 (0.04) 50 1 -test_benchmark_query2 1.3465 (2.78) 1.9035 (2.40) 1.4589 (2.47) 0.0886 (1.53) 1.4350 (2.47) 0.1081 (1.46) 18;1 685.4362 (0.41) 79 1 -test_benchmark_query20 10.9251 (22.57) 25.8535 (32.54) 11.9840 (20.27) 2.5636 (44.23) 11.2959 (19.46) 0.2591 (3.51) 3;6 83.4447 (0.05) 36 1 -test_benchmark_query21 0.4841 (1.0) 0.7945 (1.0) 0.5913 (1.0) 0.0580 (1.0) 0.5804 (1.0) 0.0739 (1.0) 76;6 1,691.0646 (1.0) 250 1 -test_benchmark_query22 13.8039 (28.51) 30.7185 (38.66) 19.8331 (33.54) 4.4588 (76.93) 19.3723 (33.38) 6.9103 (93.49) 9;0 50.4206 (0.03) 29 1 -test_benchmark_query23 1.1496 (2.37) 4.3593 (5.49) 1.3911 (2.35) 0.2145 (3.70) 1.3585 (2.34) 0.0933 (1.26) 19;32 718.8361 (0.43) 610 1 -test_benchmark_query24 1.2693 (2.62) 2.0424 (2.57) 1.5169 (2.57) 0.1056 (1.82) 1.5078 (2.60) 0.1322 (1.79) 107;2 659.2339 (0.39) 353 1 -test_benchmark_query25 1.4011 (2.89) 1.9984 (2.52) 1.6455 (2.78) 0.1158 (2.00) 1.6369 (2.82) 0.1343 (1.82) 104;10 607.7344 (0.36) 325 1 -test_benchmark_query26 3.2755 (6.77) 10.1319 (12.75) 3.6176 (6.12) 0.5596 (9.65) 3.5371 (6.09) 0.2210 (2.99) 4;6 276.4285 (0.16) 175 1 -test_benchmark_query27 9.4421 (19.50) 24.2963 (30.58) 13.3928 (22.65) 3.3355 (57.55) 14.2491 (24.55) 5.3340 (72.16) 30;1 74.6672 (0.04) 81 1 -test_benchmark_query28 1.3805 (2.85) 1.9694 (2.48) 1.6460 (2.78) 0.0947 (1.63) 1.6314 (2.81) 0.1175 (1.59) 130;11 607.5488 (0.36) 472 1 -test_benchmark_query29 1.0577 (2.18) 3.9660 (4.99) 1.2988 (2.20) 0.2884 (4.98) 1.2493 (2.15) 0.1126 (1.52) 9;15 769.9662 (0.46) 285 1 -test_benchmark_query3 1.1598 (2.40) 4.8344 (6.08) 1.3517 (2.29) 0.4075 (7.03) 1.2684 (2.19) 0.0970 (1.31) 3;11 739.8151 (0.44) 126 1 -test_benchmark_query4 0.9308 (1.92) 1.2335 (1.55) 1.0504 (1.78) 0.0711 (1.23) 1.0377 (1.79) 0.0961 (1.30) 66;0 952.0332 (0.56) 194 1 -test_benchmark_query5 3.5945 (7.42) 4.5954 (5.78) 3.9005 (6.60) 0.1726 (2.98) 3.9024 (6.72) 0.2002 (2.71) 23;2 256.3742 (0.15) 89 1 -test_benchmark_query6 0.6538 (1.35) 3.6604 (4.61) 0.8143 (1.38) 0.1904 (3.28) 0.7678 (1.32) 0.1126 (1.52) 29;29 1,228.0319 (0.73) 336 1 -test_benchmark_query7 29.8127 (61.58) 40.9078 (51.49) 31.0440 (52.50) 2.0570 (35.49) 30.6197 (52.75) 0.8259 (11.17) 1;1 32.2124 (0.02) 27 1 -test_benchmark_query8 2.5916 (5.35) 3.1906 (4.02) 2.7599 (4.67) 0.1295 (2.23) 2.7272 (4.70) 0.1475 (2.00) 35;8 362.3276 (0.21) 138 1 -test_benchmark_query9 1.8081 (3.73) 2.3520 (2.96) 2.0342 (3.44) 0.1250 (2.16) 2.0075 (3.46) 0.1910 (2.58) 65;0 491.6035 (0.29) 203 1 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file +-------------------------------------------------------------------------------------- benchmark: 30 tests --------------------------------------------------------------------------------------- +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 2.1209 (4.50) 2.6556 (3.34) 2.2756 (3.96) 0.1363 (2.94) 2.2485 (3.97) 0.1500 (2.90) 3;1 439.4414 (0.25) 14 1 +test_benchmark_query10 1.6590 (3.52) 4.6478 (5.84) 1.8253 (3.18) 0.1547 (3.34) 1.8034 (3.19) 0.0939 (1.81) 24;21 547.8598 (0.31) 487 1 +test_benchmark_query11 7.9723 (16.91) 9.1218 (11.46) 8.5255 (14.84) 0.2622 (5.66) 8.4948 (15.00) 0.4197 (8.11) 29;0 117.2955 (0.07) 80 1 +test_benchmark_query12 16.2808 (34.54) 34.7569 (43.65) 20.7133 (36.05) 3.3054 (71.33) 20.3600 (35.96) 2.2653 (43.77) 7;4 48.2782 (0.03) 35 1 +test_benchmark_query13 49.2052 (104.40) 59.5040 (74.73) 50.7832 (88.40) 2.2413 (48.36) 50.2405 (88.74) 0.7761 (15.00) 1;2 19.6916 (0.01) 19 1 +test_benchmark_query14 1.4937 (3.17) 1.9786 (2.48) 1.6776 (2.92) 0.0824 (1.78) 1.6659 (2.94) 0.1000 (1.93) 111;9 596.0949 (0.34) 379 1 +test_benchmark_query15 2.5168 (5.34) 3.1308 (3.93) 2.7355 (4.76) 0.0941 (2.03) 2.7249 (4.81) 0.1155 (2.23) 87;9 365.5617 (0.21) 348 1 +test_benchmark_query16 1.8140 (3.85) 2.2756 (2.86) 1.9688 (3.43) 0.0689 (1.49) 1.9644 (3.47) 0.0859 (1.66) 102;6 507.9228 (0.29) 334 1 +test_benchmark_query17 2.7828 (5.90) 8.5874 (10.78) 3.0171 (5.25) 0.4188 (9.04) 2.9600 (5.23) 0.1179 (2.28) 6;17 331.4425 (0.19) 281 1 +test_benchmark_query18 1.6130 (3.42) 2.3325 (2.93) 1.8234 (3.17) 0.0949 (2.05) 1.8152 (3.21) 0.1185 (2.29) 121;13 548.4163 (0.32) 459 1 +test_benchmark_query19 8.5983 (18.24) 23.7949 (29.88) 12.4075 (21.60) 2.7082 (58.44) 12.0801 (21.34) 3.5131 (67.88) 17;2 80.5965 (0.05) 71 1 +test_benchmark_query2 1.2590 (2.67) 2.0387 (2.56) 1.4312 (2.49) 0.0977 (2.11) 1.4153 (2.50) 0.1035 (2.00) 61;13 698.6901 (0.40) 279 1 +test_benchmark_query20 11.1750 (23.71) 21.4228 (26.90) 11.9200 (20.75) 1.4845 (32.03) 11.4913 (20.30) 0.4432 (8.56) 5;10 83.8925 (0.05) 70 1 +test_benchmark_query21 0.4713 (1.0) 0.7962 (1.0) 0.5745 (1.0) 0.0527 (1.14) 0.5661 (1.0) 0.0655 (1.27) 197;20 1,740.6530 (1.0) 724 1 +test_benchmark_query22 14.6594 (31.10) 37.5509 (47.16) 24.2478 (42.21) 4.5574 (98.34) 23.0444 (40.70) 5.4208 (104.75) 10;2 41.2409 (0.02) 43 1 +test_benchmark_query23 1.2525 (2.66) 4.4241 (5.56) 1.3910 (2.42) 0.1410 (3.04) 1.3794 (2.44) 0.0798 (1.54) 16;15 718.8820 (0.41) 587 1 +test_benchmark_query24 1.3565 (2.88) 4.7922 (6.02) 1.5415 (2.68) 0.2381 (5.14) 1.5109 (2.67) 0.0840 (1.62) 21;27 648.7317 (0.37) 642 1 +test_benchmark_query25 1.4541 (3.09) 5.7062 (7.17) 1.7919 (3.12) 0.2492 (5.38) 1.7626 (3.11) 0.1363 (2.63) 14;15 558.0717 (0.32) 552 1 +test_benchmark_query26 3.4484 (7.32) 4.1133 (5.17) 3.6787 (6.40) 0.1269 (2.74) 3.6656 (6.47) 0.1743 (3.37) 87;1 271.8387 (0.16) 250 1 +test_benchmark_query27 10.2395 (21.72) 32.9692 (41.41) 15.2078 (26.47) 4.0537 (87.48) 14.4512 (25.53) 3.5987 (69.54) 14;5 65.7559 (0.04) 73 1 +test_benchmark_query28 1.5180 (3.22) 3.8031 (4.78) 1.6778 (2.92) 0.1362 (2.94) 1.6551 (2.92) 0.1071 (2.07) 51;22 596.0221 (0.34) 486 1 +test_benchmark_query29 1.0736 (2.28) 3.6777 (4.62) 1.2813 (2.23) 0.1644 (3.55) 1.2672 (2.24) 0.0824 (1.59) 16;21 780.4858 (0.45) 724 1 +test_benchmark_query3 1.0963 (2.33) 1.8806 (2.36) 1.2479 (2.17) 0.1060 (2.29) 1.2198 (2.15) 0.1051 (2.03) 65;22 801.3508 (0.46) 408 1 +test_benchmark_query30 148.6766 (315.44) 171.5846 (215.49) 158.6827 (276.21) 8.2511 (178.05) 157.0752 (277.45) 12.4123 (239.85) 2;0 6.3019 (0.00) 7 1 +test_benchmark_query4 0.8992 (1.91) 1.2998 (1.63) 1.0380 (1.81) 0.0605 (1.30) 1.0327 (1.82) 0.0733 (1.42) 142;13 963.3932 (0.55) 517 1 +test_benchmark_query5 3.5444 (7.52) 4.1010 (5.15) 3.7562 (6.54) 0.0961 (2.07) 3.7504 (6.62) 0.1137 (2.20) 53;3 266.2274 (0.15) 181 1 +test_benchmark_query6 0.6662 (1.41) 1.0573 (1.33) 0.7689 (1.34) 0.0463 (1.0) 0.7576 (1.34) 0.0518 (1.0) 234;33 1,300.5784 (0.75) 924 1 +test_benchmark_query7 29.4940 (62.58) 42.5176 (53.40) 31.1065 (54.15) 2.2509 (48.57) 30.7164 (54.26) 0.8056 (15.57) 2;2 32.1476 (0.02) 31 1 +test_benchmark_query8 2.6213 (5.56) 3.2949 (4.14) 2.8580 (4.97) 0.1185 (2.56) 2.8365 (5.01) 0.1521 (2.94) 58;6 349.8981 (0.20) 220 1 +test_benchmark_query9 1.8395 (3.90) 5.8372 (7.33) 2.0653 (3.59) 0.2929 (6.32) 2.0221 (3.57) 0.1272 (2.46) 7;15 484.1951 (0.28) 432 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/results/ladybug-0.14.1.txt b/results/ladybug-0.14.1.txt index 55b2b71..58fb0d4 100644 --- a/results/ladybug-0.14.1.txt +++ b/results/ladybug-0.14.1.txt @@ -1,33 +1,34 @@ ------------------------------------------------------------------------------------- benchmark: 29 tests ------------------------------------------------------------------------------------ -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 1.8044 (3.95) 2.5032 (3.28) 2.1343 (3.64) 0.2030 (3.91) 2.1173 (3.66) 0.2622 (3.94) 2;0 468.5304 (0.28) 9 1 -test_benchmark_query10 1.6774 (3.67) 2.4054 (3.15) 1.8847 (3.21) 0.1097 (2.12) 1.8566 (3.21) 0.0887 (1.33) 43;26 530.5890 (0.31) 222 1 -test_benchmark_query11 7.7475 (16.95) 9.7963 (12.84) 8.4255 (14.35) 0.4203 (8.10) 8.3458 (14.44) 0.6017 (9.04) 19;1 118.6875 (0.07) 70 1 -test_benchmark_query12 13.8958 (30.40) 25.3557 (33.23) 17.9320 (30.55) 3.3673 (64.90) 17.3610 (30.04) 4.9085 (73.77) 5;0 55.7661 (0.03) 15 1 -test_benchmark_query13 49.7707 (108.89) 53.6029 (70.25) 51.6189 (87.93) 1.1069 (21.34) 51.5523 (89.19) 1.7811 (26.77) 6;0 19.3727 (0.01) 18 1 -test_benchmark_query14 1.5683 (3.43) 2.0795 (2.73) 1.7862 (3.04) 0.1014 (1.95) 1.7830 (3.08) 0.1086 (1.63) 47;8 559.8506 (0.33) 166 1 -test_benchmark_query15 2.5371 (5.55) 3.0657 (4.02) 2.7445 (4.68) 0.1067 (2.06) 2.7192 (4.70) 0.1441 (2.17) 94;2 364.3696 (0.21) 287 1 -test_benchmark_query16 1.7841 (3.90) 2.2375 (2.93) 1.9878 (3.39) 0.0885 (1.71) 1.9645 (3.40) 0.1083 (1.63) 31;2 503.0593 (0.30) 111 1 -test_benchmark_query17 2.7363 (5.99) 3.3285 (4.36) 2.9439 (5.01) 0.1049 (2.02) 2.9275 (5.06) 0.1302 (1.96) 53;7 339.6853 (0.20) 195 1 -test_benchmark_query18 1.5109 (3.31) 2.0728 (2.72) 1.7591 (3.00) 0.1114 (2.15) 1.7465 (3.02) 0.1302 (1.96) 108;10 568.4831 (0.33) 364 1 -test_benchmark_query19 8.9326 (19.54) 25.3142 (33.18) 13.5881 (23.15) 3.9636 (76.40) 13.4727 (23.31) 5.1604 (77.55) 16;2 73.5940 (0.04) 51 1 -test_benchmark_query2 1.4232 (3.11) 1.7122 (2.24) 1.5402 (2.62) 0.0733 (1.41) 1.5451 (2.67) 0.1123 (1.69) 31;0 649.2788 (0.38) 80 1 -test_benchmark_query20 10.6083 (23.21) 11.8530 (15.53) 11.0800 (18.87) 0.2913 (5.62) 10.9818 (19.00) 0.3855 (5.79) 11;1 90.2523 (0.05) 35 1 -test_benchmark_query21 0.4571 (1.0) 0.7630 (1.0) 0.5870 (1.0) 0.0519 (1.0) 0.5780 (1.0) 0.0665 (1.0) 64;5 1,703.4466 (1.0) 230 1 -test_benchmark_query22 13.4663 (29.46) 34.2355 (44.87) 21.2265 (36.16) 5.2868 (101.90) 21.0171 (36.36) 7.4120 (111.39) 9;0 47.1110 (0.03) 35 1 -test_benchmark_query23 1.1985 (2.62) 1.7997 (2.36) 1.4394 (2.45) 0.0915 (1.76) 1.4320 (2.48) 0.1065 (1.60) 138;16 694.7496 (0.41) 533 1 -test_benchmark_query24 1.3111 (2.87) 1.9181 (2.51) 1.5519 (2.64) 0.0983 (1.89) 1.5502 (2.68) 0.1048 (1.57) 115;23 644.3509 (0.38) 427 1 -test_benchmark_query25 1.4066 (3.08) 2.0245 (2.65) 1.6663 (2.84) 0.1209 (2.33) 1.6566 (2.87) 0.1580 (2.37) 102;3 600.1376 (0.35) 313 1 -test_benchmark_query26 3.4069 (7.45) 4.3051 (5.64) 3.7920 (6.46) 0.1652 (3.18) 3.7772 (6.53) 0.2001 (3.01) 51;5 263.7113 (0.15) 173 1 -test_benchmark_query27 10.5538 (23.09) 29.3026 (38.40) 15.9964 (27.25) 3.2494 (62.63) 15.6882 (27.14) 2.0257 (30.44) 21;13 62.5142 (0.04) 80 1 -test_benchmark_query28 1.6201 (3.54) 4.9347 (6.47) 1.8973 (3.23) 0.1950 (3.76) 1.8752 (3.24) 0.1230 (1.85) 21;11 527.0702 (0.31) 328 1 -test_benchmark_query29 1.0778 (2.36) 1.6410 (2.15) 1.2739 (2.17) 0.1077 (2.08) 1.2562 (2.17) 0.1312 (1.97) 110;9 784.9653 (0.46) 347 1 -test_benchmark_query3 1.0852 (2.37) 1.6595 (2.17) 1.2498 (2.13) 0.1120 (2.16) 1.2205 (2.11) 0.1359 (2.04) 60;6 800.1028 (0.47) 188 1 -test_benchmark_query4 0.8708 (1.91) 3.2989 (4.32) 1.1177 (1.90) 0.3012 (5.81) 1.0608 (1.84) 0.1154 (1.73) 11;13 894.7101 (0.53) 309 1 -test_benchmark_query5 3.3633 (7.36) 4.0929 (5.36) 3.6133 (6.16) 0.1499 (2.89) 3.5938 (6.22) 0.1860 (2.80) 26;3 276.7576 (0.16) 88 1 -test_benchmark_query6 0.6934 (1.52) 3.2474 (4.26) 0.9060 (1.54) 0.2521 (4.86) 0.8504 (1.47) 0.1249 (1.88) 15;25 1,103.7735 (0.65) 433 1 -test_benchmark_query7 30.0759 (65.80) 32.6885 (42.84) 31.0633 (52.91) 0.5796 (11.17) 31.0890 (53.79) 0.7172 (10.78) 7;1 32.1923 (0.02) 27 1 -test_benchmark_query8 2.6225 (5.74) 3.1663 (4.15) 2.8395 (4.84) 0.1051 (2.03) 2.8276 (4.89) 0.1405 (2.11) 51;1 352.1775 (0.21) 160 1 -test_benchmark_query9 1.8821 (4.12) 5.0720 (6.65) 2.1572 (3.67) 0.2426 (4.68) 2.1129 (3.66) 0.1525 (2.29) 13;9 463.5698 (0.27) 208 1 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file +-------------------------------------------------------------------------------------- benchmark: 30 tests --------------------------------------------------------------------------------------- +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 1.9117 (3.97) 2.6705 (2.92) 2.1081 (3.60) 0.1874 (3.60) 2.0716 (3.62) 0.1117 (1.77) 2;1 474.3652 (0.28) 13 1 +test_benchmark_query10 1.7532 (3.64) 2.3283 (2.54) 1.9033 (3.25) 0.0817 (1.57) 1.8865 (3.30) 0.0914 (1.45) 49;6 525.4153 (0.31) 209 1 +test_benchmark_query11 7.7270 (16.05) 9.0004 (9.82) 8.1187 (13.86) 0.2107 (4.05) 8.1073 (14.18) 0.2738 (4.35) 19;2 123.1724 (0.07) 75 1 +test_benchmark_query12 14.1464 (29.38) 21.6140 (23.59) 16.9058 (28.86) 2.2256 (42.73) 16.5018 (28.87) 2.8348 (45.03) 4;0 59.1512 (0.03) 16 1 +test_benchmark_query13 49.6842 (103.20) 53.5551 (58.46) 51.5110 (87.92) 0.9531 (18.30) 51.4873 (90.07) 1.1535 (18.32) 5;0 19.4133 (0.01) 18 1 +test_benchmark_query14 1.6579 (3.44) 2.1268 (2.32) 1.8347 (3.13) 0.1053 (2.02) 1.8167 (3.18) 0.1391 (2.21) 41;4 545.0562 (0.32) 144 1 +test_benchmark_query15 2.5260 (5.25) 3.4298 (3.74) 2.7253 (4.65) 0.1335 (2.56) 2.6937 (4.71) 0.1512 (2.40) 55;11 366.9327 (0.21) 269 1 +test_benchmark_query16 1.8451 (3.83) 2.3163 (2.53) 1.9933 (3.40) 0.0831 (1.60) 1.9953 (3.49) 0.0946 (1.50) 21;2 501.6840 (0.29) 85 1 +test_benchmark_query17 2.7762 (5.77) 3.4865 (3.81) 2.9867 (5.10) 0.1106 (2.12) 2.9715 (5.20) 0.1347 (2.14) 46;4 334.8133 (0.20) 190 1 +test_benchmark_query18 1.6432 (3.41) 2.2382 (2.44) 1.8052 (3.08) 0.1070 (2.06) 1.7788 (3.11) 0.1249 (1.98) 85;17 553.9455 (0.32) 365 1 +test_benchmark_query19 9.4651 (19.66) 22.8702 (24.96) 14.1154 (24.09) 2.8611 (54.93) 13.5340 (23.67) 2.4370 (38.71) 15;4 70.8448 (0.04) 56 1 +test_benchmark_query2 1.2712 (2.64) 1.9603 (2.14) 1.4940 (2.55) 0.1408 (2.70) 1.5063 (2.63) 0.2294 (3.64) 24;1 669.3568 (0.39) 63 1 +test_benchmark_query20 10.7147 (22.26) 11.1838 (12.21) 10.9092 (18.62) 0.1331 (2.56) 10.8868 (19.04) 0.1968 (3.13) 10;0 91.6657 (0.05) 23 1 +test_benchmark_query21 0.4814 (1.0) 0.9161 (1.0) 0.5859 (1.0) 0.0645 (1.24) 0.5717 (1.0) 0.0630 (1.0) 50;13 1,706.8294 (1.0) 238 1 +test_benchmark_query22 14.2664 (29.63) 34.6549 (37.83) 22.2841 (38.04) 4.2106 (80.84) 22.6807 (39.67) 5.8241 (92.51) 14;1 44.8751 (0.03) 45 1 +test_benchmark_query23 1.3136 (2.73) 2.5025 (2.73) 1.5575 (2.66) 0.1299 (2.49) 1.5345 (2.68) 0.1553 (2.47) 134;12 642.0463 (0.38) 543 1 +test_benchmark_query24 1.3690 (2.84) 1.7574 (1.92) 1.5081 (2.57) 0.0657 (1.26) 1.4949 (2.61) 0.0830 (1.32) 141;12 663.1070 (0.39) 492 1 +test_benchmark_query25 1.4820 (3.08) 4.4241 (4.83) 1.7130 (2.92) 0.2880 (5.53) 1.6657 (2.91) 0.1128 (1.79) 11;18 583.7764 (0.34) 367 1 +test_benchmark_query26 3.4514 (7.17) 4.3842 (4.79) 3.5946 (6.14) 0.0929 (1.78) 3.5871 (6.27) 0.0974 (1.55) 48;4 278.1939 (0.16) 205 1 +test_benchmark_query27 10.1100 (21.00) 28.5882 (31.21) 15.4468 (26.36) 4.4585 (85.60) 15.2192 (26.62) 4.1056 (65.21) 13;6 64.7385 (0.04) 56 1 +test_benchmark_query28 1.6654 (3.46) 2.0297 (2.22) 1.8098 (3.09) 0.0583 (1.12) 1.8051 (3.16) 0.0761 (1.21) 168;7 552.5401 (0.32) 510 1 +test_benchmark_query29 1.0920 (2.27) 1.4700 (1.60) 1.2240 (2.09) 0.0611 (1.17) 1.2120 (2.12) 0.0751 (1.19) 96;10 816.9921 (0.48) 348 1 +test_benchmark_query3 1.1448 (2.38) 1.5808 (1.73) 1.2674 (2.16) 0.0824 (1.58) 1.2460 (2.18) 0.1025 (1.63) 52;6 789.0132 (0.46) 190 1 +test_benchmark_query30 144.2956 (299.73) 169.7094 (185.25) 154.3682 (263.48) 8.5969 (165.05) 153.8919 (269.20) 11.1298 (176.78) 2;0 6.4780 (0.00) 7 1 +test_benchmark_query4 0.9089 (1.89) 1.2413 (1.35) 1.0283 (1.76) 0.0521 (1.0) 1.0202 (1.78) 0.0631 (1.00) 88;7 972.4397 (0.57) 312 1 +test_benchmark_query5 3.4085 (7.08) 4.1252 (4.50) 3.6512 (6.23) 0.1165 (2.24) 3.6401 (6.37) 0.1328 (2.11) 21;2 273.8851 (0.16) 82 1 +test_benchmark_query6 0.7381 (1.53) 1.1139 (1.22) 0.8477 (1.45) 0.0634 (1.22) 0.8386 (1.47) 0.0798 (1.27) 106;6 1,179.6415 (0.69) 336 1 +test_benchmark_query7 29.5983 (61.48) 41.4377 (45.23) 31.5597 (53.87) 2.1364 (41.02) 30.9265 (54.10) 1.1964 (19.00) 2;2 31.6860 (0.02) 29 1 +test_benchmark_query8 2.7169 (5.64) 3.2915 (3.59) 2.8623 (4.89) 0.0910 (1.75) 2.8420 (4.97) 0.1151 (1.83) 39;3 349.3652 (0.20) 148 1 +test_benchmark_query9 1.9575 (4.07) 6.0546 (6.61) 2.2280 (3.80) 0.4422 (8.49) 2.1359 (3.74) 0.1619 (2.57) 5;7 448.8280 (0.26) 196 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/results/lance-graph-0.5.2.txt b/results/lance-graph-0.5.2.txt new file mode 100644 index 0000000..bc44ec1 --- /dev/null +++ b/results/lance-graph-0.5.2.txt @@ -0,0 +1,34 @@ +------------------------------------------------------------------------------------ benchmark: 30 tests ------------------------------------------------------------------------------------ +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 1.4880 (2.00) 1.7510 (1.70) 1.5913 (1.88) 0.0707 (1.82) 1.5808 (1.87) 0.1047 (2.05) 6;0 628.4261 (0.53) 20 1 +test_benchmark_query10 24.5643 (33.03) 26.1123 (25.41) 25.2822 (29.88) 0.3587 (9.22) 25.2022 (29.84) 0.5195 (10.18) 10;0 39.5535 (0.03) 39 1 +test_benchmark_query11 2.9605 (3.98) 4.1125 (4.00) 3.3338 (3.94) 0.2158 (5.55) 3.3298 (3.94) 0.3030 (5.94) 31;2 299.9581 (0.25) 98 1 +test_benchmark_query12 17.3072 (23.28) 18.8930 (18.39) 18.0033 (21.28) 0.3471 (8.92) 17.9671 (21.27) 0.4776 (9.36) 14;0 55.5453 (0.05) 50 1 +test_benchmark_query13 8.3172 (11.19) 12.7550 (12.41) 8.8557 (10.47) 0.7152 (18.38) 8.6996 (10.30) 0.2604 (5.10) 6;8 112.9218 (0.10) 105 1 +test_benchmark_query14 2.6341 (3.54) 9.8257 (9.56) 2.8916 (3.42) 0.5145 (13.22) 2.8136 (3.33) 0.1835 (3.60) 5;13 345.8292 (0.29) 314 1 +test_benchmark_query15 2.1769 (2.93) 2.5593 (2.49) 2.3119 (2.73) 0.0629 (1.62) 2.3029 (2.73) 0.0816 (1.60) 117;7 432.5516 (0.37) 398 1 +test_benchmark_query16 3.9541 (5.32) 17.1901 (16.73) 4.4465 (5.25) 0.9964 (25.61) 4.2662 (5.05) 0.2572 (5.04) 4;22 224.8946 (0.19) 196 1 +test_benchmark_query17 2.4389 (3.28) 3.4308 (3.34) 2.7018 (3.19) 0.1502 (3.86) 2.6657 (3.16) 0.1760 (3.45) 72;5 370.1262 (0.31) 263 1 +test_benchmark_query18 1.9281 (2.59) 9.6172 (9.36) 2.1926 (2.59) 0.6380 (16.40) 2.0884 (2.47) 0.1196 (2.34) 10;43 456.0866 (0.39) 464 1 +test_benchmark_query19 18.6085 (25.03) 20.2367 (19.70) 19.2952 (22.80) 0.4137 (10.63) 19.2328 (22.77) 0.6143 (12.03) 14;0 51.8264 (0.04) 51 1 +test_benchmark_query2 2.0981 (2.82) 2.9451 (2.87) 2.3721 (2.80) 0.1214 (3.12) 2.3592 (2.79) 0.1106 (2.17) 53;16 421.5694 (0.36) 207 1 +test_benchmark_query20 2.1109 (2.84) 3.1520 (3.07) 2.5914 (3.06) 0.2243 (5.76) 2.5667 (3.04) 0.3413 (6.69) 102;0 385.8904 (0.33) 285 1 +test_benchmark_query21 1.5824 (2.13) 2.0726 (2.02) 1.7486 (2.07) 0.0974 (2.50) 1.7318 (2.05) 0.1115 (2.18) 19;2 571.8983 (0.48) 64 1 +test_benchmark_query22 12.3993 (16.67) 26.4168 (25.71) 13.6543 (16.14) 2.5838 (66.41) 12.9595 (15.34) 0.5255 (10.30) 4;9 73.2369 (0.06) 72 1 +test_benchmark_query23 2.5095 (3.37) 3.3880 (3.30) 2.7454 (3.24) 0.1453 (3.73) 2.7139 (3.21) 0.1331 (2.61) 67;23 364.2406 (0.31) 312 1 +test_benchmark_query24 1.8287 (2.46) 2.3992 (2.34) 1.9825 (2.34) 0.0662 (1.70) 1.9785 (2.34) 0.0714 (1.40) 78;8 504.4231 (0.43) 313 1 +test_benchmark_query25 1.3210 (1.78) 1.6379 (1.59) 1.4607 (1.73) 0.0466 (1.20) 1.4606 (1.73) 0.0582 (1.14) 186;8 684.5953 (0.58) 628 1 +test_benchmark_query26 2.8380 (3.82) 3.8140 (3.71) 3.0986 (3.66) 0.1412 (3.63) 3.0721 (3.64) 0.1485 (2.91) 67;10 322.7225 (0.27) 293 1 +test_benchmark_query27 22.3448 (30.05) 23.8053 (23.17) 23.0160 (27.20) 0.2981 (7.66) 23.0332 (27.27) 0.3432 (6.72) 10;2 43.4480 (0.04) 43 1 +test_benchmark_query28 2.6078 (3.51) 3.0987 (3.02) 2.7874 (3.29) 0.0866 (2.23) 2.7748 (3.29) 0.1139 (2.23) 77;7 358.7552 (0.30) 305 1 +test_benchmark_query29 2.4340 (3.27) 6.4821 (6.31) 2.6923 (3.18) 0.2189 (5.63) 2.6807 (3.17) 0.1056 (2.07) 10;12 371.4282 (0.31) 362 1 +test_benchmark_query3 3.1701 (4.26) 4.7527 (4.63) 3.3894 (4.01) 0.1563 (4.02) 3.3644 (3.98) 0.1318 (2.58) 30;11 295.0366 (0.25) 185 1 +test_benchmark_query30 30.4550 (40.96) 32.1223 (31.26) 31.2980 (36.99) 0.3605 (9.26) 31.3224 (37.08) 0.3275 (6.42) 10;3 31.9510 (0.03) 32 1 +test_benchmark_query4 2.9182 (3.92) 3.4547 (3.36) 3.1160 (3.68) 0.1073 (2.76) 3.1019 (3.67) 0.1349 (2.64) 62;4 320.9208 (0.27) 205 1 +test_benchmark_query5 1.8660 (2.51) 2.5484 (2.48) 2.1055 (2.49) 0.0893 (2.29) 2.1014 (2.49) 0.1063 (2.08) 66;8 474.9472 (0.40) 243 1 +test_benchmark_query6 0.7436 (1.0) 1.0275 (1.0) 0.8462 (1.0) 0.0389 (1.0) 0.8447 (1.0) 0.0510 (1.0) 321;15 1,181.7965 (1.0) 1091 1 +test_benchmark_query7 12.8149 (17.23) 14.5070 (14.12) 13.3133 (15.73) 0.3028 (7.78) 13.2999 (15.75) 0.3600 (7.05) 18;3 75.1126 (0.06) 67 1 +test_benchmark_query8 1.1346 (1.53) 1.5817 (1.54) 1.2828 (1.52) 0.0620 (1.59) 1.2793 (1.51) 0.0749 (1.47) 72;7 779.5587 (0.66) 263 1 +test_benchmark_query9 1.9952 (2.68) 2.4711 (2.40) 2.1742 (2.57) 0.0745 (1.91) 2.1683 (2.57) 0.0879 (1.72) 114;15 459.9466 (0.39) 416 1 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/results/neo4j-2025.12.1.txt b/results/neo4j-2025.12.1.txt index 4d0534f..1da5a4d 100644 --- a/results/neo4j-2025.12.1.txt +++ b/results/neo4j-2025.12.1.txt @@ -1,33 +1,34 @@ --------------------------------------------------------------------------------------- benchmark: 29 tests -------------------------------------------------------------------------------------- -Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -test_benchmark_query1 4.5662 (4.07) 7.9165 (2.15) 5.7428 (3.78) 1.2804 (2.71) 5.3974 (3.84) 1.1992 (6.12) 1;0 174.1311 (0.26) 5 1 -test_benchmark_query10 4.3096 (3.85) 7.6700 (2.08) 4.9036 (3.23) 0.8107 (1.72) 4.5665 (3.25) 0.3377 (1.72) 3;3 203.9318 (0.31) 21 1 -test_benchmark_query11 11.3090 (10.09) 16.4480 (4.46) 12.9206 (8.51) 1.7023 (3.61) 12.1890 (8.68) 2.8055 (14.32) 2;0 77.3955 (0.12) 14 1 -test_benchmark_query12 3.4635 (3.09) 6.5704 (1.78) 4.6609 (3.07) 1.1609 (2.46) 4.4706 (3.18) 1.1712 (5.98) 2;0 214.5527 (0.33) 5 1 -test_benchmark_query13 7.6419 (6.82) 10.2188 (2.77) 8.7770 (5.78) 0.9356 (1.98) 8.5917 (6.12) 0.9677 (4.94) 2;0 113.9337 (0.17) 5 1 -test_benchmark_query14 1.1795 (1.05) 4.0575 (1.10) 1.5923 (1.05) 0.5706 (1.21) 1.4067 (1.00) 0.2915 (1.49) 4;4 628.0120 (0.95) 35 1 -test_benchmark_query15 2.7099 (2.42) 5.9078 (1.60) 3.2335 (2.13) 0.5319 (1.13) 3.1391 (2.23) 0.2711 (1.38) 2;2 309.2583 (0.47) 33 1 -test_benchmark_query16 1.4991 (1.34) 4.2685 (1.16) 1.9887 (1.31) 0.5715 (1.21) 1.8387 (1.31) 0.4499 (2.30) 3;2 502.8378 (0.76) 27 1 -test_benchmark_query17 3.6983 (3.30) 16.9161 (4.59) 5.2950 (3.49) 3.1083 (6.59) 4.1400 (2.95) 0.7694 (3.93) 2;3 188.8588 (0.29) 21 1 -test_benchmark_query18 3.6140 (3.23) 6.8964 (1.87) 4.0790 (2.69) 0.6890 (1.46) 3.9085 (2.78) 0.2310 (1.18) 2;3 245.1596 (0.37) 22 1 -test_benchmark_query19 5.3842 (4.80) 8.9943 (2.44) 6.1461 (4.05) 1.5929 (3.38) 5.4534 (3.88) 0.9807 (5.00) 1;1 162.7046 (0.25) 5 1 -test_benchmark_query2 5.5077 (4.92) 7.7213 (2.09) 6.4048 (4.22) 0.8509 (1.80) 6.0194 (4.28) 1.5655 (7.99) 4;0 156.1333 (0.24) 9 1 -test_benchmark_query20 400.9177 (357.78) 463.1863 (125.58) 421.8090 (277.94) 24.5619 (52.06) 412.9683 (293.94) 27.1205 (138.38) 1;0 2.3707 (0.00) 5 1 -test_benchmark_query21 1.2233 (1.09) 4.1606 (1.13) 1.5734 (1.04) 0.5670 (1.20) 1.4747 (1.05) 0.1960 (1.0) 1;2 635.5555 (0.96) 25 1 -test_benchmark_query22 3.2502 (2.90) 5.2348 (1.42) 3.6827 (2.43) 0.7463 (1.58) 3.3378 (2.38) 0.6475 (3.30) 1;1 271.5424 (0.41) 7 1 -test_benchmark_query23 3.2370 (2.89) 6.6556 (1.80) 4.0356 (2.66) 0.8064 (1.71) 3.9351 (2.80) 0.7647 (3.90) 4;2 247.7977 (0.38) 25 1 -test_benchmark_query24 1.1206 (1.0) 4.0367 (1.09) 1.5177 (1.0) 0.4718 (1.0) 1.4050 (1.0) 0.3551 (1.81) 1;1 658.9131 (1.0) 37 1 -test_benchmark_query25 2.6251 (2.34) 5.6793 (1.54) 3.0771 (2.03) 0.6817 (1.44) 2.8469 (2.03) 0.3698 (1.89) 3;3 324.9813 (0.49) 25 1 -test_benchmark_query26 1.2396 (1.11) 3.6884 (1.0) 1.7845 (1.18) 0.5056 (1.07) 1.7100 (1.22) 0.3985 (2.03) 5;2 560.3905 (0.85) 25 1 -test_benchmark_query27 2.6475 (2.36) 5.5377 (1.50) 3.3515 (2.21) 1.0913 (2.31) 2.8824 (2.05) 0.4261 (2.17) 1;1 298.3708 (0.45) 6 1 -test_benchmark_query28 3.0628 (2.73) 6.0044 (1.63) 4.3319 (2.85) 1.2427 (2.63) 3.6485 (2.60) 2.2453 (11.46) 3;0 230.8469 (0.35) 8 1 -test_benchmark_query29 2.5316 (2.26) 5.5024 (1.49) 3.0835 (2.03) 0.4901 (1.04) 2.9675 (2.11) 0.3126 (1.60) 6;3 324.3094 (0.49) 39 1 -test_benchmark_query3 1.9932 (1.78) 6.7290 (1.82) 2.7822 (1.83) 1.1888 (2.52) 2.4327 (1.73) 0.5806 (2.96) 1;1 359.4313 (0.55) 14 1 -test_benchmark_query4 4.1825 (3.73) 7.5235 (2.04) 4.8082 (3.17) 0.7715 (1.64) 4.5888 (3.27) 0.5105 (2.60) 2;2 207.9802 (0.32) 18 1 -test_benchmark_query5 4.5011 (4.02) 6.3177 (1.71) 5.0708 (3.34) 0.6389 (1.35) 4.8507 (3.45) 0.2684 (1.37) 1;1 197.2073 (0.30) 6 1 -test_benchmark_query6 3.3081 (2.95) 6.7625 (1.83) 4.1487 (2.73) 0.7289 (1.54) 3.9722 (2.83) 0.4310 (2.20) 4;3 241.0393 (0.37) 21 1 -test_benchmark_query7 1.6739 (1.49) 5.2899 (1.43) 2.1989 (1.45) 1.0538 (2.23) 1.7943 (1.28) 0.5013 (2.56) 1;1 454.7639 (0.69) 11 1 -test_benchmark_query8 13.4295 (11.98) 17.6011 (4.77) 15.5802 (10.27) 1.7500 (3.71) 15.4720 (11.01) 3.4450 (17.58) 5;0 64.1840 (0.10) 9 1 -test_benchmark_query9 1.9796 (1.77) 5.6878 (1.54) 2.6149 (1.72) 0.9271 (1.97) 2.2784 (1.62) 0.5254 (2.68) 2;2 382.4230 (0.58) 19 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file +------------------------------------------------------------------------------------------ benchmark: 30 tests ------------------------------------------------------------------------------------------ +Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +test_benchmark_query1 3.8717 (3.18) 7.4454 (1.97) 4.8933 (2.98) 1.4850 (3.61) 4.2990 (2.72) 1.6227 (9.69) 1;0 204.3628 (0.34) 5 1 +test_benchmark_query10 4.1303 (3.39) 7.1820 (1.90) 4.9262 (3.00) 0.6567 (1.60) 4.8589 (3.08) 0.6227 (3.72) 3;1 202.9957 (0.33) 19 1 +test_benchmark_query11 12.9360 (10.62) 18.0553 (4.79) 14.9252 (9.08) 1.6719 (4.06) 14.4897 (9.18) 2.7231 (16.26) 5;0 67.0007 (0.11) 12 1 +test_benchmark_query12 5.6573 (4.64) 14.3229 (3.80) 8.0887 (4.92) 3.5239 (8.56) 6.7725 (4.29) 2.4496 (14.62) 1;1 123.6298 (0.20) 5 1 +test_benchmark_query13 8.3255 (6.83) 13.8492 (3.67) 9.8533 (6.00) 2.2754 (5.53) 8.8053 (5.58) 1.9628 (11.72) 1;1 101.4885 (0.17) 5 1 +test_benchmark_query14 1.2736 (1.05) 4.3214 (1.15) 1.6888 (1.03) 0.5472 (1.33) 1.6169 (1.02) 0.3128 (1.87) 2;2 592.1243 (0.97) 31 1 +test_benchmark_query15 2.8993 (2.38) 5.9215 (1.57) 3.3052 (2.01) 0.5641 (1.37) 3.2112 (2.04) 0.2019 (1.21) 2;3 302.5522 (0.50) 28 1 +test_benchmark_query16 1.8147 (1.49) 5.0642 (1.34) 2.4007 (1.46) 0.6697 (1.63) 2.2750 (1.44) 0.4678 (2.79) 2;2 416.5537 (0.68) 24 1 +test_benchmark_query17 3.3443 (2.75) 16.6362 (4.41) 4.9384 (3.01) 3.3127 (8.05) 3.7099 (2.35) 0.8293 (4.95) 2;3 202.4931 (0.33) 19 1 +test_benchmark_query18 3.2864 (2.70) 6.3495 (1.68) 3.6899 (2.25) 0.6538 (1.59) 3.5115 (2.23) 0.2724 (1.63) 2;2 271.0126 (0.45) 22 1 +test_benchmark_query19 5.6897 (4.67) 15.6924 (4.16) 7.7676 (4.73) 4.4306 (10.77) 5.8476 (3.71) 2.5726 (15.36) 1;1 128.7393 (0.21) 5 1 +test_benchmark_query2 4.6268 (3.80) 7.5288 (2.00) 5.9006 (3.59) 0.9334 (2.27) 5.8460 (3.71) 1.0465 (6.25) 3;0 169.4754 (0.28) 9 1 +test_benchmark_query20 433.0199 (355.47) 599.6303 (158.94) 475.7287 (289.49) 70.1786 (170.56) 451.5764 (286.20) 60.4575 (360.94) 1;1 2.1020 (0.00) 5 1 +test_benchmark_query21 1.2413 (1.02) 4.1425 (1.10) 1.8157 (1.10) 0.6634 (1.61) 1.6061 (1.02) 0.2651 (1.58) 2;3 550.7550 (0.91) 24 1 +test_benchmark_query22 3.0699 (2.52) 6.0628 (1.61) 3.6491 (2.22) 1.0811 (2.63) 3.1857 (2.02) 0.4395 (2.62) 1;1 274.0428 (0.45) 7 1 +test_benchmark_query23 3.1808 (2.61) 6.2377 (1.65) 3.9493 (2.40) 0.7700 (1.87) 3.6955 (2.34) 0.3280 (1.96) 5;5 253.2080 (0.42) 26 1 +test_benchmark_query24 1.2182 (1.0) 3.7727 (1.0) 1.6434 (1.0) 0.4115 (1.0) 1.5779 (1.0) 0.1933 (1.15) 5;3 608.5094 (1.0) 36 1 +test_benchmark_query25 2.4818 (2.04) 5.5808 (1.48) 3.0793 (1.87) 0.6214 (1.51) 3.0067 (1.91) 0.4830 (2.88) 2;2 324.7485 (0.53) 26 1 +test_benchmark_query26 1.4263 (1.17) 4.1306 (1.09) 1.8218 (1.11) 0.5590 (1.36) 1.6973 (1.08) 0.2476 (1.48) 2;2 548.9102 (0.90) 24 1 +test_benchmark_query27 2.4140 (1.98) 6.7904 (1.80) 3.5443 (2.16) 1.6484 (4.01) 3.0405 (1.93) 1.1359 (6.78) 1;1 282.1438 (0.46) 6 1 +test_benchmark_query28 2.6972 (2.21) 5.7863 (1.53) 3.9115 (2.38) 1.1912 (2.90) 3.2406 (2.05) 1.8656 (11.14) 3;0 255.6591 (0.42) 7 1 +test_benchmark_query29 2.6210 (2.15) 6.2340 (1.65) 2.9144 (1.77) 0.5743 (1.40) 2.8131 (1.78) 0.1810 (1.08) 1;2 343.1289 (0.56) 38 1 +test_benchmark_query3 2.2591 (1.85) 6.8616 (1.82) 2.9493 (1.79) 1.2008 (2.92) 2.5070 (1.59) 0.4899 (2.92) 1;1 339.0627 (0.56) 14 1 +test_benchmark_query30 1,213.2225 (995.94) 1,350.6868 (358.01) 1,255.1823 (763.79) 55.0428 (133.77) 1,234.8569 (782.62) 51.8661 (309.65) 1;0 0.7967 (0.00) 5 1 +test_benchmark_query4 3.5955 (2.95) 6.8703 (1.82) 4.1218 (2.51) 0.7246 (1.76) 3.8414 (2.43) 0.4304 (2.57) 1;1 242.6149 (0.40) 19 1 +test_benchmark_query5 4.1471 (3.40) 5.9247 (1.57) 4.8703 (2.96) 0.8128 (1.98) 4.4418 (2.82) 1.5192 (9.07) 2;0 205.3253 (0.34) 6 1 +test_benchmark_query6 2.9778 (2.44) 6.0410 (1.60) 3.8818 (2.36) 0.6363 (1.55) 3.6772 (2.33) 0.4742 (2.83) 4;2 257.6104 (0.42) 22 1 +test_benchmark_query7 1.6695 (1.37) 5.1811 (1.37) 2.2006 (1.34) 0.9576 (2.33) 1.9172 (1.22) 0.2810 (1.68) 1;1 454.4178 (0.75) 12 1 +test_benchmark_query8 11.7353 (9.63) 18.6258 (4.94) 14.5516 (8.85) 2.4514 (5.96) 14.0285 (8.89) 4.5380 (27.09) 3;0 68.7208 (0.11) 9 1 +test_benchmark_query9 2.0752 (1.70) 6.4517 (1.71) 2.8203 (1.72) 1.0421 (2.53) 2.4998 (1.58) 0.1675 (1.0) 2;4 354.5747 (0.58) 18 1 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file