aboutsummaryrefslogtreecommitdiffstats
path: root/benchmark.py
blob: 7a7df244d9971d65e18c7ce987a357301de0eb2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import time
import tempfile
import shutil
from femtoqueue import FemtoQueue, FemtoTask

def benchmark_femtoqueue(num_tasks: int = 1000):
    tmpdir = tempfile.mkdtemp()
    queue = FemtoQueue(data_dir=tmpdir, node_name="node1")

    data = b"x" * 100  # 100-byte payload

    print(f"Pushing {num_tasks} tasks...")
    start = time.time()
    for _ in range(num_tasks):
        queue.push(data)
    push_duration = time.time() - start
    print(f"Pushed in {push_duration:.4f}s ({num_tasks / push_duration:.2f} tasks/sec)")

    print("Processing tasks (pop + done)...")
    start = time.time()
    processed = 0
    while True:
        task = queue.pop()
        if not task:
            break
        queue.done(task)
        processed += 1
    process_duration = time.time() - start
    print(f"Processed in {process_duration:.4f}s ({processed / process_duration:.2f} tasks/sec)")

    shutil.rmtree(tmpdir)

if __name__ == "__main__":
    benchmark_femtoqueue(1000)