Details
-
Test
-
Status: Closed
-
Major
-
Resolution: Fixed
-
proton-c-0.33.0
-
None
Description
----------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------- // size_t size = bytes->size + 0; BM_Encode10MbMessage/put_binary count:1 71.7 ms 70.4 ms 10 BM_Encode10MbMessage/put_binary count:10 239 ms 205 ms 3 // size_t size = bytes->size + 1; BM_Encode10MbMessage/put_binary count:1 1.25 ms 0.874 ms 744 BM_Encode10MbMessage/put_binary count:10 1059 ms 1045 ms 1 // size_t size = bytes->size + 2; BM_Encode10MbMessage/put_binary count:1 1.22 ms 0.916 ms 634 BM_Encode10MbMessage/put_binary count:10 178 ms 135 ms 5 // size_t size = pn_max(bytes->size+1, PNI_INTERN_MINSIZE); BM_Encode10MbMessage/put_binary count:1 0.941 ms 0.815 ms 783 BM_Encode10MbMessage/put_binary count:10 1390 ms 1187 ms 1 // size_t size = pn_max(bytes->size+2, PNI_INTERN_MINSIZE); BM_Encode10MbMessage/put_binary count:1 0.922 ms 0.811 ms 718 BM_Encode10MbMessage/put_binary count:10 184 ms 144 ms 5
The above shows that + 1 improves things significantly, but there is a scenario where + 2 is even better.
static int pni_data_intern_node(pn_data_t *data, pni_node_t *node) { pn_bytes_t *bytes = pni_data_bytes(data, node); if (!bytes) return 0; if (data->buf == NULL) { // Heuristic to avoid growing small buffers too much // size + 1 to allow for zero termination size_t size = pn_max(bytes->size+1, PNI_INTERN_MINSIZE); ...
Attachments
Issue Links
- depends upon
-
PROTON-2353 Client becomes cpu bound in pn_buffer_rotate() on session flow control
- Open
-
PROTON-2229 pn_data_t initialization lead to low performance
- Closed