Jiri Daněk created PROTON-2321:
----------------------------------

             Summary: Add benchmark for pn_data_t initialization (PROTON-2229)
                 Key: PROTON-2321
                 URL: https://issues.apache.org/jira/browse/PROTON-2321
             Project: Qpid Proton
          Issue Type: Test
          Components: proton-c
    Affects Versions: proton-c-0.33.0
            Reporter: Jiri Daněk
            Assignee: Jiri Daněk
             Fix For: proton-c-0.34.0


{noformat}
-----------------------------------------------------------------------------------
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
{noformat}

The above shows that + 1 improves things significantly, but there is a scenario 
where + 2 is even better.

{code}
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);
   ...
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to