mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import pytest
|
|
|
|
from semantica.context.context_graph import ContextGraph
|
|
|
|
|
|
@pytest.mark.benchmark(group="graph_traversal")
|
|
@pytest.mark.parametrize("hops", [1, 2])
|
|
def test_bfs_traversal_depth(benchmark, populated_context_graph, hops):
|
|
"""Benchmarks the BFS neighbor retrieval at differnet depths."""
|
|
graph = populated_context_graph(n_nodes=2000)
|
|
start_node = list(graph.nodes.keys())[0]
|
|
|
|
def run():
|
|
return graph.get_neighbors(start_node, hops=hops)
|
|
|
|
benchmark.pedantic(run, iterations=5, rounds=10)
|
|
|
|
|
|
@pytest.mark.benchmark(group="graph_construction")
|
|
@pytest.mark.parametrize("size", [1000])
|
|
def test_graph_ingestion_speed(benchmark, generate_graph_data, size):
|
|
"""
|
|
Benchmarks the speed of adding nodes and edges to the
|
|
in-memory structure.
|
|
"""
|
|
|
|
nodes, edges = generate_graph_data(n_nodes=size)
|
|
|
|
def run():
|
|
graph = ContextGraph()
|
|
graph.add_nodes(nodes)
|
|
graph.add_edges(edges)
|
|
|
|
benchmark.pedantic(run, iterations=1, rounds=5)
|
|
|
|
|
|
@pytest.mark.benchmark(group="graph_query")
|
|
def test_graph_keyword_search(benchmark, populated_context_graph):
|
|
"""
|
|
Benchmarks the linear scan keyword search over graph nodes.
|
|
"""
|
|
graph = populated_context_graph(n_nodes=2000)
|
|
|
|
def run():
|
|
return graph.query("Node content 500")
|
|
|
|
benchmark.pedantic(run, iterations=5, rounds=10)
|