RLC optimization
Two improvements:
- using functions instead of function pointers which enables inlining
- avoid 1 malloc/free per SDU
TODO:
* See if this works in CI (this MR)
- Take a closer look at RLC lists. The code is complex so I am still getting acquainted with it.
Results so far (using rlc benchmark):
before:
--------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------
BM_nr_rlc_am_entity/100 49769 ns 49768 ns 13153
BM_nr_rlc_am_entity/256 146033 ns 146029 ns 4608
BM_nr_rlc_am_entity/1024 498289 ns 498290 ns 1340
BM_nr_rlc_am_entity/4096 1925366 ns 1925339 ns 355
BM_nr_rlc_am_entity/16384 7547552 ns 7547565 ns 88
BM_nr_rlc_am_entity/20000 9362682 ns 9362704 ns 71
after:
--------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------
BM_nr_rlc_am_entity/100 2702 ns 2702 ns 257098
BM_nr_rlc_am_entity/256 6724 ns 6724 ns 103067
BM_nr_rlc_am_entity/1024 25450 ns 25450 ns 25794
BM_nr_rlc_am_entity/4096 106033 ns 106032 ns 6068
BM_nr_rlc_am_entity/16384 424008 ns 423996 ns 1573
BM_nr_rlc_am_entity/20000 538686 ns 538656 ns 1207
Edited by Bartosz Podrygajlo