Increase default maximum size of brtie dictionary to 128m ips (#1364)

* Increase default maximum size of brtie dictionary to 128m ips
pbuilder: use newer cmake on ubuntu trusty

* no cmake
This commit is contained in:
proller 2017-10-23 20:19:15 +03:00 committed by alexey-milovidov
parent 6555d08782
commit ddb0dcd2fd
4 changed files with 22 additions and 3 deletions

View File

@ -4,3 +4,8 @@ add_library (btrie
)
target_include_directories (btrie PUBLIC include)
if (ENABLE_TESTS)
add_executable(test_btrie test/test_btrie.c)
target_link_libraries(test_btrie btrie)
endif ()

View File

@ -13,7 +13,12 @@ extern "C" {
*/
#define BTRIE_NULL (uintptr_t) -1
#define MAX_PAGES 1024 * 16
#if !defined(BTRIE_MAX_PAGES)
/// 54 ip per page. 8 bytes memory per page when empty
#define BTRIE_MAX_PAGES 1024 * 2048 /// 128m ips , ~16mb ram when empty
// #define BTRIE_MAX_PAGES 1024 * 65535 /// 4g ips (whole ipv4), ~512mb ram when empty
#endif
typedef struct btrie_node_s btrie_node_t;
@ -36,7 +41,7 @@ typedef struct btrie_s {
* memory pool.
* memory management(esp free) will be so easy by using this facility.
*/
char *pools[MAX_PAGES];
char *pools[BTRIE_MAX_PAGES];
size_t len;
} btrie_t;

View File

@ -46,7 +46,7 @@ btrie_create()
tree->free = NULL;
tree->start = NULL;
tree->size = 0;
memset(tree->pools, 0, sizeof(btrie_t *) * MAX_PAGES);
memset(tree->pools, 0, sizeof(btrie_t *) * BTRIE_MAX_PAGES);
tree->len = 0;
tree->root = btrie_alloc(tree);

View File

@ -85,6 +85,15 @@ int main()
printf("test case 4 error\n");
}
// insert 4m ips
for (size_t ip = 1; ip < 1024 * 1024 * 4; ++ip) {
ret = btrie_insert(it, ip, 0xffffffff, 1);
if (ret != 0) {
printf("insert 5 error (%d) (%zu) .\n", ret, ip);
goto error;
}
}
return 0;
error: