You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Changed stream list to arrays and optimized stream lookup with SSE2.
The stream list in the SRTP context is now implemented with two arrays:
an array of SSRCs and an array of pointers to the streams corresponding
to the SSRCs. The streams no longer form a single linked list.
Stream lookup by SSRC is now performed over the array of SSRCs, which
is considerably faster because it is more cache-friendly. Additionally,
the lookup is optimized for SSE2, which provides an additional massive
speedup with many streams in the list. Although the lookup still has
linear complexity, its absolute times are reduced and with tens to
hundreds elements are lower or comparable with a typical rb-tree
equivalent.
Expected speedup of SSE2 version over the previous implementation:
SSRCs speedup (scalar) speedup (SSE2)
1 0.39x 0.22x
3 0.57x 0.23x
5 0.69x 0.62x
10 0.77x 1.43x
20 0.86x 2.38x
30 0.87x 3.44x
50 1.13x 6.21x
100 1.25x 8.51x
200 1.30x 9.83x
At small numbers of SSRCs the new algorithm is somewhat slower, but
given that the absolute and relative times of the lookup are very small,
that slowdown is not very significant.
0 commit comments