mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-23 13:17:16 +00:00
OPTIM: ebtree: pack the struct eb_node to avoid holes on 64-bit
struct eb_node is 36 bytes on a 64-bit machine. It's thus rounded up to 40 bytes, and when forming a struct eb32_node, another 4 bytes are added, rounded up to 48 bytes. We waste 8 bytes of space on 48 bytes because of alignments. It's basically the same with memory blocks and immediate strings. By packing the structure, eb32_node is down to 40 bytes. This saves 16 bytes per struct task and 20 bytes per struct stksess, used to store each stick-table key.
This commit is contained in:
parent
37e340ce4b
commit
f82eb02830
@ -377,7 +377,7 @@ struct eb_node {
|
|||||||
eb_troot_t *leaf_p; /* leaf node's parent */
|
eb_troot_t *leaf_p; /* leaf node's parent */
|
||||||
short int bit; /* link's bit position. */
|
short int bit; /* link's bit position. */
|
||||||
short unsigned int pfx; /* data prefix length, always related to leaf */
|
short unsigned int pfx; /* data prefix length, always related to leaf */
|
||||||
};
|
} __attribute__((packed));
|
||||||
|
|
||||||
/* Return the structure of type <type> whose member <member> points to <ptr> */
|
/* Return the structure of type <type> whose member <member> points to <ptr> */
|
||||||
#define eb_entry(ptr, type, member) container_of(ptr, type, member)
|
#define eb_entry(ptr, type, member) container_of(ptr, type, member)
|
||||||
|
Loading…
Reference in New Issue
Block a user