性能测试工具bench
This commit is contained in:
73
kvstore.h
73
kvstore.h
@@ -120,15 +120,26 @@ int kvs_array_exist(kvs_array_t *inst, char *key);
|
||||
#if BIN_SAFE
|
||||
typedef uint8_t KEY_TYPE; // key
|
||||
|
||||
// 固定部分结构
|
||||
typedef struct {
|
||||
unsigned char color;
|
||||
struct _rbtree_node *right;
|
||||
struct _rbtree_node *left;
|
||||
struct _rbtree_node *parent;
|
||||
uint32_t key_len;
|
||||
uint32_t value_len;
|
||||
} rbtree_node_fixed;
|
||||
|
||||
// 完整节点结构(用于类型定义,实际内存大小由分配时确定)
|
||||
typedef struct _rbtree_node {
|
||||
unsigned char color;
|
||||
struct _rbtree_node *right;
|
||||
struct _rbtree_node *left;
|
||||
struct _rbtree_node *parent;
|
||||
KEY_TYPE *key;
|
||||
uint32_t key_len;
|
||||
KEY_TYPE *value;
|
||||
uint32_t value_len;
|
||||
unsigned char color;
|
||||
struct _rbtree_node *right;
|
||||
struct _rbtree_node *left;
|
||||
struct _rbtree_node *parent;
|
||||
uint32_t key_len;
|
||||
uint32_t value_len;
|
||||
// 动态数据:key[key_len] + value[value_len]
|
||||
// 不存储为结构体成员,通过指针运算访问
|
||||
} rbtree_node;
|
||||
|
||||
typedef struct _rbtree {
|
||||
@@ -187,26 +198,32 @@ int kvs_rbtree_exist(kvs_rbtree_t *inst, char *key);
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLE_HASH
|
||||
|
||||
|
||||
#if BIN_SAFE
|
||||
#define MAX_TABLE_SIZE 1024
|
||||
typedef struct hashnode_s {
|
||||
uint8_t *key;
|
||||
size_t key_len;
|
||||
|
||||
uint8_t *value;
|
||||
size_t value_len;
|
||||
|
||||
struct hashnode_s *next;
|
||||
} hashnode_t;
|
||||
|
||||
typedef struct hashtable_s {
|
||||
hashnode_t **nodes;
|
||||
int max_slots;
|
||||
int count;
|
||||
} hashtable_t;
|
||||
#if ENABLE_HASH
|
||||
|
||||
|
||||
#if BIN_SAFE
|
||||
typedef struct hashnode_s {
|
||||
uint32_t key_len; // key 长度
|
||||
uint32_t value_len; // value 长度
|
||||
struct hashnode_s *next; // 链表指针
|
||||
// 动态数据:key[key_len] + value[value_len]
|
||||
// 不存储为结构体成员,通过指针运算访问
|
||||
} hashnode_t;
|
||||
|
||||
typedef struct hashbucket_s {
|
||||
hashnode_t *head; // 桶内链表
|
||||
uint32_t local_depth; // 桶的局部深度
|
||||
uint32_t item_count; // 桶内元素数量
|
||||
struct hashbucket_s *next_all; // 用于统一释放/遍历所有桶
|
||||
} hashbucket_t;
|
||||
|
||||
typedef struct hashtable_s {
|
||||
hashbucket_t **directory; // 目录,指向桶
|
||||
uint32_t dir_size; // 目录大小(2^global_depth)
|
||||
uint32_t global_depth; // 全局深度
|
||||
int count; // 当前元素总数
|
||||
hashbucket_t *bucket_list;// 所有唯一桶链表
|
||||
} hashtable_t;
|
||||
|
||||
typedef struct hashtable_s kvs_hash_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user