Profiling data of decoding EPDAN compressed bitmap
holger at freyther.de
Wed Jul 13 09:43:06 UTC 2016
> On 23 Jun 2016, at 16:39, Pravin Kumaravel Manoharan <Pravin.Manoharan at radisys.com> wrote:
> Following is the profiling results comparison of the decoding algorithms (unit in micro-seconds). Each of the 4 test inputs is decoded 10000 times for getting below data.
> Important summary:
> 1. For few other identified test vectors existing algorithm fails functionally to decode whereas tree based decoding algorithm succeeds.
> 2. Details of these test vectors are in the latest patch available in users/pravin/epdan_profiling at http://git.osmocom.org/radisys/osmo-pcu/
I used it from the testcase you added on gerrit and re-added osmo_t4_decode to it. More about results later:
> 3. From the above results it shows that Tree based decoding algorithm is better than existing algorithm for the decoding time consumed.
> 4. The max value is not included because it is abnormally high which occurs at very low frequency like once in 10000 iterations.
max. Well without distribution this argument is difficult. With a tree we will "jump" through memory a lot more than with a table. E.g. outside a microbenchmark the numbers might not be that stable.
Anyway on sysmoBTS #1 with nightly build as of today/yesterday and 89ce5adbe881f4292d5bd5bfc85bd142b3fb4151 (from gerrit refs/changes/17/417/2). Modified to disable verification and 100000 iterations. The difference is big enough.
root at sysmobts-v2:~# time ./TbfTest.TREE
root at sysmobts-v2:~# time ./TbfTest
perf report -i perf.data.tree
33.00% TbfTest.TREE libosmocore.so.7.0.0 [.] bitvec_set_bit_pos
20.46% TbfTest.TREE TbfTest.TREE [.] bitvec_write_field(bitvec*, unsigned int&, unsigned long long, unsigned int)
14.30% TbfTest.TREE libosmocore.so.7.0.0 [.] bitvec_set_bit
9.94% TbfTest.TREE TbfTest.TREE [.] search_runlen(node*, unsigned char const*, unsigned char, unsigned char*, unsigned short*)
5.27% TbfTest.TREE TbfTest.TREE [.] Decoding::decompress_crbb(signed char, unsigned char, unsigned char const*, bitvec*)
4.97% TbfTest.TREE libosmocore.so.7.0.0 [.] 0x0000523c
4.29% TbfTest.TREE TbfTest.TREE [.] 0x000023a8
perf report -i perf.data.roll
57.51% TbfTest libosmocore.so.7.0.0 [.] osmo_t4_decode
12.09% TbfTest libosmocore.so.7.0.0 [.] bitvec_shiftl
10.63% TbfTest libosmocore.so.7.0.0 [.] bitvec_set_bit_pos
4.49% TbfTest libosmocore.so.7.0.0 [.] bitvec_set_bit
4.17% TbfTest libosmocore.so.7.0.0 [.] bitvec_fill
3.62% TbfTest libosmocore.so.7.0.0 [.] 0x00004d88
2.21% TbfTest libosmocore.so.7.0.0 [.] bitvec_get_int16_msb
1.60% TbfTest libc-2.18.so [.] memcpy
0.68% TbfTest [kernel.kallsyms] [k] read_cycles
Conclusions and comments in the next mail.
More information about the osmocom-net-gprs