Skip to content

Conversation

@ypconstante
Copy link
Contributor

This PR replaces anonymous function usages on decode to use recursion or named function references. This reduces a memory usage and reductions count, and brings a small performance improvement.

##### With input google_message1_proto2 #####
Name                                                            ips        average  deviation         median         99th %
decode (decode-replace-anonymous-func-e2aea63-decode)      425.90 K        2.35 μs  ±1737.36%        2.18 μs        3.92 μs
decode (main-1605e2b-decode)                               404.04 K        2.47 μs  ±1326.40%        2.31 μs        3.49 μs

Comparison: 
decode (decode-replace-anonymous-func-e2aea63-decode)      425.90 K
decode (main-1605e2b-decode)                               404.04 K - 1.05x slower +0.127 μs

Memory usage statistics:

Name                                                     Memory usage
decode (decode-replace-anonymous-func-e2aea63-decode)         4.02 KB
decode (main-1605e2b-decode)                                  4.38 KB - 1.09x memory usage +0.36 KB

**All measurements for memory usage were the same**

Reduction count statistics:

Name                                                  Reduction count
decode (decode-replace-anonymous-func-e2aea63-decode)             438
decode (main-1605e2b-decode)                                      470 - 1.07x reduction count +32

**All measurements for reduction count were the same**

##### With input google_message1_proto3 #####
Name                                                            ips        average  deviation         median         99th %
decode (decode-replace-anonymous-func-e2aea63-decode)      430.74 K        2.32 μs  ±1614.88%        2.16 μs        3.25 μs
decode (main-1605e2b-decode)                               407.90 K        2.45 μs  ±1117.13%        2.31 μs        3.49 μs

Comparison: 
decode (decode-replace-anonymous-func-e2aea63-decode)      430.74 K
decode (main-1605e2b-decode)                               407.90 K - 1.06x slower +0.130 μs

Memory usage statistics:

Name                                                     Memory usage
decode (decode-replace-anonymous-func-e2aea63-decode)         3.97 KB
decode (main-1605e2b-decode)                                  4.37 KB - 1.10x memory usage +0.40 KB

**All measurements for memory usage were the same**

Reduction count statistics:

Name                                                  Reduction count
decode (decode-replace-anonymous-func-e2aea63-decode)             422
decode (main-1605e2b-decode)                                      471 - 1.12x reduction count +49

**All measurements for reduction count were the same**

##### With input google_message2 #####
Name                                                            ips        average  deviation         median         99th %
decode (decode-replace-anonymous-func-e2aea63-decode)       10.83 K       92.30 μs     ±9.95%       91.34 μs      129.09 μs
decode (main-1605e2b-decode)                                10.80 K       92.60 μs    ±21.01%       91.69 μs      109.02 μs

Comparison: 
decode (decode-replace-anonymous-func-e2aea63-decode)       10.83 K
decode (main-1605e2b-decode)                                10.80 K - 1.00x slower +0.29 μs

Memory usage statistics:

Name                                                          average  deviation         median         99th %
decode (decode-replace-anonymous-func-e2aea63-decode)        96.41 KB     ±0.01%       96.41 KB       96.41 KB
decode (main-1605e2b-decode)                                 96.14 KB     ±0.00%       96.14 KB       96.14 KB

Comparison: 
decode (decode-replace-anonymous-func-e2aea63-decode)        96.41 KB
decode (main-1605e2b-decode)                                 96.14 KB - 1.00x memory usage -0.26556 KB

Reduction count statistics:

Name                                                  Reduction count
decode (decode-replace-anonymous-func-e2aea63-decode)         10.16 K
decode (main-1605e2b-decode)                                  10.19 K - 1.00x reduction count +0.0320 K

Copy link
Collaborator

@whatyouhide whatyouhide left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m ok with this change but we should leave code comments explaining why we take this approach in these functions, otherwise the chance of someone going and eventually changing them back is a bit too high 🙃

@ypconstante
Copy link
Contributor Author

Added a comment to update_in_message 0763f93

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants