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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?