1
1
import timeit , functools , os , pytest
2
- from pydatastructs .trees .binary_trees import (BinarySearchTree )
2
+ from pydatastructs .trees .binary_trees import (BinarySearchTree , RedBlackTree )
3
3
from pydatastructs .utils .misc_util import Backend
4
4
5
5
@pytest .mark .xfail
@@ -22,7 +22,55 @@ def g(backend, tree):
22
22
for node in range (- 1000 , 1000 ):
23
23
tree .search (node )
24
24
def h (backend , tree ):
25
- for node in range (2000 ):
25
+ for node in range (- 1000 , 1000 ):
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 ))
47
+
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
51
+
52
+ @pytest .mark .xfail
53
+ def test_RedBlackTree (** kwargs ):
54
+ cpp = Backend .CPP
55
+ repeat = 1
56
+ number = 1
57
+
58
+ size = int (os .environ .get ("PYDATASTRUCTS_BENCHMARK_SIZE" , "1000" ))
59
+ size = kwargs .get ("size" , size )
60
+
61
+ RBT = RedBlackTree
62
+ b1 = RBT (backend = Backend .PYTHON )
63
+ b2 = RBT (backend = Backend .CPP )
64
+
65
+ def f (backend , tree ):
66
+ for node in range (- 1000 ,1000 ):
67
+ tree .insert (node , node )
68
+
69
+ def g (backend , tree ):
70
+ for node in range (- 1000 , 1000 ):
71
+ tree .search (node )
72
+ def h (backend , tree ):
73
+ for node in range (- 1000 , 1000 ):
26
74
tree .delete (node )
27
75
28
76
kwds_dict_PY = {"backend" : Backend .PYTHON , "tree" :b1 }
0 commit comments