Patrick Pelissier
e09fa89781
Little bit rewrite to help the compiler optimizes the loop a bit more:
...
as the variables are not longer on the stack, it uses more registers
and more instructions in the critical loop than before. By
copying the data into stack local variable, the compiler is once again
able to optimize the loop properly.
2018-04-14 08:07:01 +02:00
Patrick Pelissier
70b1421114
Update after review
2018-04-13 20:56:48 +02:00
Patrick Pelissier
b80a30785a
Fix
2018-04-13 20:28:57 +02:00
Patrick Pelissier
c3245ac301
Full refactorisation and proper use of M*LIB.
...
Should be as fast as before.
2018-04-13 20:28:01 +02:00
Patrick Pelissier
085d5b411c
Add oplist for B*TREE
2018-04-13 20:16:23 +02:00
Patrick Pelissier
8c26d6d0b5
Update
2018-04-12 23:39:19 +02:00
Patrick Pelissier
76f5085e84
Merge branch 'master' of https://github.com/P-p-H-d/mlib
2018-04-11 22:42:46 +02:00
Patrick Pelissier
80d78e3270
Add bounded string cte macro
2018-04-11 22:42:22 +02:00
Patrick Pelissier
654521b74c
Add some tests of _equal_p
2018-04-10 23:25:04 +02:00
Patrick Pelissier
353d2d4cc9
Fix issue in copy of B*TREE:
...
the _next field wasn't properly set for the deepest nodes.
2018-04-10 23:23:36 +02:00
Patrick Pelissier
b38d84419a
Add methods hash, eqal_p, out_str, in_str & get_str
...
Format of serialisation needs to be properly uniformised between:
dictionnary,
red-black tree,
set,
b+tree with key,value,
b+tree with only key.
2018-04-09 18:42:34 +02:00
Patrick Pelissier
0d085771e4
Add tests for new methods
2018-04-09 18:07:03 +02:00
Patrick Pelissier
f3b2b6b41e
Add methods _swap, _move & _init_move
2018-04-09 18:06:48 +02:00
Patrick Pelissier
fb35ad7ab3
Update due no new LIBSRT API.
2018-04-08 21:43:25 +02:00
Patrick Pelissier
cf6e721994
Fix wrong usage of CollectionC by the benchmark.
2018-04-08 21:32:57 +02:00
Patrick Pelissier
9faea5ff15
Rewrite bench code so that it computes what is expected.
2018-04-08 21:10:29 +02:00
Patrick Pelissier
fe18009bc0
Rewrite the loop so that the result is the same for dict and dict_oa.
2018-04-08 21:07:20 +02:00
Patrick Pelissier
10f900ea3e
Rewrite code to avoid warning if optimisations are turned on.
2018-04-08 20:27:37 +02:00
Patrick Pelissier
63874694f8
Rewrite the code to avoid some silly warnings on some implementation.
2018-04-08 20:01:04 +02:00
Patrick Pelissier
9b9e246e66
More tests
2018-04-08 11:16:31 +02:00
Patrick Pelissier
e6a6eb9be5
Fix issue in it_from for B+TREE
2018-04-08 11:13:48 +02:00
Patrick Pelissier
050bb5dbfa
Add tests for it_from & it_to_p for B+TREE
2018-04-08 11:13:22 +02:00
Patrick Pelissier
b005ec1845
Fix function max for B+TREE
2018-04-08 10:48:02 +02:00
Patrick Pelissier
f158a94e0a
Add tests for min & max
2018-04-08 10:47:52 +02:00
Patrick Pelissier
a166620a6d
Add method _from, _to_p, _min & _max for B+TREE
2018-04-08 10:39:27 +02:00
Patrick Pelissier
47fb467878
Add basic it test for B+tree
2018-04-08 07:24:56 +02:00
Patrick Pelissier
67af80c772
Fix issue in it_end for B+TREE
2018-04-08 07:22:34 +02:00
Patrick Pelissier
1f44155127
Add one more corner case
2018-04-07 12:11:50 +02:00
Patrick Pelissier
87a3ac4a76
Add test for methods _init_set & _set for B+tree
2018-04-07 12:10:50 +02:00
Patrick Pelissier
73354a04d5
Add method _init_set & _set for B+tree
2018-04-07 12:10:19 +02:00
Patrick Pelissier
cb3038e73c
Add more checks
2018-04-07 11:51:38 +02:00
Patrick Pelissier
b6ec31fe11
Add more test.
2018-04-07 11:50:18 +02:00
Patrick Pelissier
c7059a60ee
Add more tests
2018-04-07 11:44:16 +02:00
Patrick Pelissier
af49aaf8b1
Add more tests.
2018-04-07 11:42:12 +02:00
Patrick Pelissier
4149b8388b
Improve quality of coverage report by not expanding contract function.
2018-04-07 11:41:43 +02:00
Patrick Pelissier
df0d723714
Compute coverage for B+TREE
2018-04-07 11:28:50 +02:00
Patrick Pelissier
44209ed93e
Add more tests
2018-04-07 11:19:58 +02:00
Patrick Pelissier
930a3c8637
More tests.
2018-04-07 11:14:31 +02:00
Patrick Pelissier
d2f5698397
iMake oplist optional for BPTREE_DEF
2018-04-07 11:10:13 +02:00
Patrick Pelissier
42d9fc3284
Update doc
2018-04-07 00:43:51 +02:00
Patrick Pelissier
91db494898
Add basic iterator for B+tree
...
I can't match the exact interface of a dictionary of the key and the value are in separate place in the structure
(so I can't return a pair of (key,value)). Instead I return a pair of pointer (key_ptr, value_ptr).
I don't see any other way which doesn't evolve copy of the key/value.
For the RBtree interface, no such problem occurs.
2018-04-05 22:44:36 +02:00
Patrick Pelissier
75217d4914
Rewrite / cleanup
2018-04-04 22:57:47 +02:00
Patrick Pelissier
ceaf004719
Remove wrong comment
2018-04-04 22:55:19 +02:00
Patrick Pelissier
27b7380433
B+TREE: Add _size operator
2018-04-04 22:54:39 +02:00
Patrick Pelissier
7ca254ade9
B+TREE: Add _pop function.
2018-04-04 22:39:46 +02:00
Patrick Pelissier
c91864c2a7
B+TREE: _remove returns a boolean indicating if the item
...
removed was present or not
2018-04-04 22:35:47 +02:00
Patrick Pelissier
4925297a35
Update doc
2018-04-04 20:27:44 +02:00
Patrick Pelissier
d7ece50ed0
Replace "Dict" by "DictOA" since KLIB uses an OpenAddressing dictionnary.
2018-04-03 20:13:18 +02:00
Patrick Pelissier
3ef4a9f413
Fix issue with the way of benching the BTREE of KLIB.
...
Forgot to initialize the key in the search pass.
2018-04-03 20:10:11 +02:00
Patrick Pelissier
9768b5b37a
Add bench of B+TREE
2018-04-03 20:07:21 +02:00