treetrie-2015/main.c

82 lines
2.0 KiB
C
Raw Normal View History

2015-06-30 00:39:49 +00:00
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include "fasthash.h"
#include "treetrie.h"
2015-06-30 20:10:10 +00:00
#include "critbit.h"
2015-06-30 00:39:49 +00:00
2015-06-30 20:10:10 +00:00
int main0(int argc, char *argv[]) {
2015-06-30 00:39:49 +00:00
tt_arena_t a;
int i, outer;
2015-06-30 16:07:48 +00:00
tt_node_ptr_t prev = TT_EMPTY;
2015-06-30 00:39:49 +00:00
setbuf(stdout, NULL);
tt_arena_init(&a);
for (outer = 0; outer < 10; outer++) {
2015-06-30 03:19:44 +00:00
/* printf("---------------------------------------- grab/drop of %d\n", prev); */
2015-06-30 00:39:49 +00:00
tt_grab(&a, prev);
tt_drop(&a, prev);
2015-06-30 03:19:44 +00:00
/* tt_arena_flush(&a); */
/* printf("---------------------------------------- AFTER DROP of %d:\n", prev); */
/* tt_dump_arena(&a); */
2015-06-30 00:39:49 +00:00
prev = TT_EMPTY;
2015-06-30 03:19:44 +00:00
/* printf("======================================== LOOP ITERATION %d\n", outer); */
2015-06-30 03:45:41 +00:00
/* tt_dump_arena_summary(&a); */
for (i = 0; i < 1000000; i++) {
2015-06-30 16:18:05 +00:00
tt_node_ptr_t leaf = tt_cons_leaf(&a, TT_OK, 1001);
tt_node_ptr_t curr = tt_cons_node(&a, 0, leaf, prev);
2015-06-30 03:19:44 +00:00
/* tt_dump_arena(&a); */
2015-06-30 00:39:49 +00:00
prev = curr;
}
}
2015-06-30 03:19:44 +00:00
/* tt_dump_arena(&a); */
tt_grab(&a, prev);
tt_drop(&a, prev);
/* tt_arena_flush(&a); */
tt_dump_arena_summary(&a);
2015-06-30 00:39:49 +00:00
tt_arena_done(&a);
return EXIT_SUCCESS;
}
2015-06-30 20:10:10 +00:00
static void dump_mapping(void *context, tt_atom_t key, tt_node_ptr_t trie) {
printf(" -- %u --> %u/%u\n", key, tt_ptr_idx(trie), tt_ptr_tag(trie));
}
int main(int argc, char *argv[]) {
tt_arena_t a;
tt_node_ptr_t curr = TT_EMPTY;
int i;
setbuf(stdout, NULL);
tt_arena_init(&a);
2015-06-30 20:56:41 +00:00
/* tt_dump_arena(&a); */
for (i = 0; i < 1000000; i++) {
2015-06-30 20:10:10 +00:00
tt_node_ptr_t next = tt_dict_set(&a, curr, i, TT_OK);
tt_drop(&a, curr);
curr = tt_grab(&a, next);
2015-06-30 20:56:41 +00:00
/* printf("\nAfter i=%d...\n", i); */
/* tt_dump_arena(&a); */
2015-06-30 20:10:10 +00:00
}
/* tt_arena_flush(&a); */
printf("\nFinal tree node index is %u/%u\n", tt_ptr_idx(curr), tt_ptr_tag(curr));
2015-06-30 20:56:41 +00:00
/* tt_dump_arena(&a); */
2015-06-30 20:10:10 +00:00
2015-06-30 20:56:41 +00:00
/* tt_dict_foreach(&a, curr, NULL, dump_mapping); */
2015-06-30 20:10:10 +00:00
tt_drop(&a, curr);
curr = TT_NO_PTR;
/* tt_arena_flush(&a); */
2015-06-30 20:56:41 +00:00
/* tt_dump_arena(&a); */
/* tt_dump_arena_summary(&a); */
2015-06-30 20:10:10 +00:00
tt_arena_done(&a);
return EXIT_SUCCESS;
}