Skip to content

RLC optimization

Bartosz Podrygajlo requested to merge rlc-optimization into develop

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

Merge request reports