[asterisk-dev] [Code Review] Optimize chan_sip.c check_rtp_timeout() function

Rob Gagnon reviewboard at asterisk.org
Tue Aug 23 13:56:26 CDT 2011


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1377/
-----------------------------------------------------------

(Updated Aug. 23, 2011, 1:56 p.m.)


Review request for Asterisk Developers and Rob Gagnon.


Changes
-------

Changed "holdtimeout" to "hold_timeout".  And since we're trying to optimize for runtime, removed the initialization of the three int's by moving the declaration down to the same place as the variables are populated.


Summary
-------

Copying from original post on Jira:

While reviewing how "rtptimeout" and "rtpholdtimeout" operate in code, I found that the check_rtp_timeout() function could be optimized a little to speed up asterisk performance.

Currently, three integers are fetched from the rtp instance multiple times apiece (causing of course, multiple stack operations)

In the worst-case scenario:
 - ast_rtp_instance_get_timeout() is called 4 times.
 - ast_rtp_instance_get_hold_timeout() is called 4 times.
 - ast_rtp_instance_get_keepalive() is called 3 times.
 
With this patch, each function will be called only once, thus removing up to 9 stack push/pops during runtime
Description posted on jira would be the same


This addresses bug ASTERISK-18319.
    https://issues.asterisk.org/jira/browse/ASTERISK-18319


Diffs (updated)
-----

  /trunk/channels/chan_sip.c 333000 

Diff: https://reviewboard.asterisk.org/r/1377/diff


Testing
-------

Compiled code with patch, ran on test system without any problems.  Turned logging way up, and verifiied that calls that were silent/disconnected by accident were still being hung-up on.


Thanks,

Rob

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110823/8fe7d882/attachment.htm>


More information about the asterisk-dev mailing list