1、减少memset 和memcpy的使用
经常看到程序员使用memset和memcpy,一层一层的拷贝耗cpu是比较多的,需要争取零拷贝字节 memset一块内存需要看是否必要,在写rtp程序的时候,看见过有程序眼memset一块内存,也就是mtu大小的缓存,mtu一般在1000到1500之内,每发一次包,就memset一次,完全每必要,因为你每次拷贝进去,那就很费,拷贝过程已经把缓存清掉了,没有必要事先memset 一次
制作服务器的过程中,零拷贝系统的写法其实比较简单,就是预留空间,在写flv和rtmpserver的过程中,把预先留的字节留好,就不用拷贝了,rtmpserver 需要预留的空间最大为18字节,熟悉协议的人都知道,而websocket server 需要预留的空间为最大10字节,那么预先留好18+10 字节的空间就已经足够了。
/*
sock : need send socket
header : flv header and ***reserve 10 bytes*** for websocket header
headerlen : header len
data : flv av data
datalen : flv av data len
*/
bool c_flvserver::func_set_head_send
关注
打赏