コード例 #1
0
ファイル: node.c プロジェクト: Numetric/nessDB
uint32_t node_size(struct node *node)
{
	int i;
	uint32_t sz = 0;

	for (i = 0; i < node->n_children; i++) {
		struct child_pointer *ptr = &node->parts[i].ptr;

		if (node->height > 0)
			sz += nmb_memsize(ptr->u.nonleaf->buffer);
		else
			sz += lmb_memsize(ptr->u.leaf->buffer);
	}

	return sz;
}
コード例 #2
0
ファイル: node.c プロジェクト: mirrtalk/nessDB
int node_find_heaviest_idx(struct node *node)
{
	int i;
	int idx = 0;
	uint32_t maxsz = 0;

	for (i = 0; i < (int)node->u.n.n_children; i++) {
		uint32_t sz;
		struct partition *part;

		part = &node->u.n.parts[i];
		sz = nmb_memsize(part->buffer);
		if (sz > maxsz) {
			idx = i;
			maxsz = sz;
		}
	}

	return idx;
}
コード例 #3
0
ファイル: node.c プロジェクト: mirrtalk/nessDB
uint32_t node_size(struct node *n)
{
	uint32_t size = 0U;

	size += (sizeof(*n));
	if (nessunlikely(n->height == 0)) {
		size += lmb_memsize(n->u.l.buffer);
	} else {
		uint32_t i;

		for (i = 0; i < n->u.n.n_children - 1; i++) {
			size += msgsize(&n->u.n.pivots[i]);
		}

		for (i = 0; i < n->u.n.n_children; i++) {
			size += nmb_memsize(n->u.n.parts[i].buffer);
		}
	}

	return size;
}
コード例 #4
0
ファイル: node.c プロジェクト: Numetric/nessDB
int node_find_heaviest_idx(struct node *node)
{
	int i;
	int idx = 0;
	uint32_t sz = 0;
	uint32_t maxsz = 0;

	for (i = 0; i < node->n_children; i++) {
		struct child_pointer *ptr = &node->parts[i].ptr;

		if (node->height > 0)
			sz = nmb_memsize(ptr->u.nonleaf->buffer);
		else
			sz = lmb_memsize(ptr->u.leaf->buffer);

		if (sz > maxsz) {
			idx = i;
			maxsz = sz;
		}
	}

	return idx;
}