Skip to content

Commit 39aa94a

Browse files
committed
Added separate benchmark tests for BST insert, search and delete
1 parent 7a9e27f commit 39aa94a

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed
Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,52 @@
1-
import random, timeit, functools, os, pytest
1+
import timeit, functools, os, pytest
22
from pydatastructs.trees.binary_trees import (BinarySearchTree)
33
from pydatastructs.utils.misc_util import Backend
4-
import random
54

65
@pytest.mark.xfail
7-
def test_BST_insert(**kwargs):
6+
def test_BinarySearchTree(**kwargs):
87
cpp = Backend.CPP
9-
repeat = 2
10-
number = 2
8+
repeat = 1
9+
number = 1
1110

1211
size = int(os.environ.get("PYDATASTRUCTS_BENCHMARK_SIZE", "1000"))
1312
size = kwargs.get("size", size)
1413

15-
def f(backend):
16-
BST = BinarySearchTree
17-
b = BST(backend=backend)
14+
BST = BinarySearchTree
15+
b1 = BST(backend=Backend.PYTHON)
16+
b2 = BST(backend=Backend.CPP)
17+
18+
def f(backend, tree):
1819
for node in range(-1000,1000):
19-
b.insert(node, node)
20+
tree.insert(node, node)
21+
def g(backend, tree):
2022
for node in range(-1000, 1000):
21-
b.search(node)
23+
tree.search(node)
24+
def h(backend, tree):
2225
for node in range(2000):
23-
b.delete(node)
26+
tree.delete(node)
27+
28+
kwds_dict_PY = {"backend": Backend.PYTHON, "tree":b1}
29+
kwds_dict_CPP = {"backend": Backend.CPP, "tree":b2}
30+
31+
timer_python = timeit.Timer(functools.partial(f, **kwds_dict_PY))
32+
python_insert = min(timer_python.repeat(repeat, number))
33+
34+
timer_cpp = timeit.Timer(functools.partial(f, **kwds_dict_CPP))
35+
cpp_insert = min(timer_cpp.repeat(repeat, number))
36+
assert cpp_insert < python_insert
37+
38+
timer_python = timeit.Timer(functools.partial(g, **kwds_dict_PY))
39+
python_search = min(timer_python.repeat(repeat, number))
40+
41+
timer_cpp = timeit.Timer(functools.partial(g, **kwds_dict_CPP))
42+
cpp_search = min(timer_cpp.repeat(repeat, number))
43+
assert cpp_search < python_search
44+
45+
timer_python = timeit.Timer(functools.partial(h, **kwds_dict_PY))
46+
python_delete = min(timer_python.repeat(repeat, number))
2447

25-
backend_dict = {"backend": Backend.PYTHON}
26-
timer_python = timeit.Timer(functools.partial(f, **backend_dict))
27-
python_backend = min(timer_python.repeat(repeat, number))
48+
timer_cpp = timeit.Timer(functools.partial(h, **kwds_dict_CPP))
49+
cpp_delete = min(timer_cpp.repeat(repeat, number))
50+
assert cpp_delete < python_delete
2851

29-
backend_dict = {"backend": Backend.CPP}
30-
timer_cpp = timeit.Timer(functools.partial(f, **backend_dict))
31-
cpp_backend = min(timer_cpp.repeat(repeat, number))
32-
assert cpp_backend < python_backend
52+
test_BinarySearchTree()

0 commit comments

Comments
 (0)