1.7 字符串复制的优化
这个函数osip_strdup()同样简单,但是使用频率应该是系统里最高的了。去除一些不必要的操作,改strncpy为memcpy。
总结
经过以上改进,协议栈的整体性能提升至原来的5倍。经过测试,随着数的增加UA的性能会有所下降,主要原因是因为eXosip还没有优化,UA访问eXosip提供的 API时带来了一定程度的性能下降。现在性能瓶颈主要在集中于SIP消息的解析,到字符串转化,复制,释放等,相关函数如下:
osip_message_parse(); /* 还没做优化 */
osip_message_to_str(); /* 已优化 */
osip_message_clone();
osip_message_free();
如果对消息内的内存分配机制进行改进的话,最后两个函数有较大的提升空间,但是改动涉及面会很广。
经过测试,当数增加到256后,eXosip带来的性能下降所占的比重已经比较大了,导致最后UA占的CPU已经超过了协议栈的1/2,而数不多的时候不到1/3,加上测试程序的影响,非协议栈程序所耗CPU已经接近协议栈了。可以看出对eXosip进行优化后,性能应该还有一定的提升空间。
最后,希望有高手能做到更进一步的消息层面的优化,基本上也就是上面几个函数了,有机会大家可以互相认识探讨一下。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-38863-4.html
他那问题跟阿富汗现在是国际贩毒中心之一一样