[iOS] 直播性能优化

本周被教导的很彻底,膜拜大牛0.0 主要target直播,不感兴趣的可以避雷~

1. 限制刷新频率

这个库是用于限流哒,可以多次调用仅保持最后一次:
https://github.com/yulingtianxia/MessageThrottle (MTModePerformLast模式)

上面的使用场景例如直播间主播收到礼物的总值 or 人数,每次用户送礼都会刷新,如果用户送礼多那么就会频繁刷新,但其实对于用户而言,1秒刷新100次和1秒1次没啥区别,所以应该限制一下每秒仅刷新一次,只要最后一次的数值即可。这个其实适用于很多UI刷新场景,也和之前问过的button如何避免多次点击很类似。

例如直播间里面的聊天,经常是收到后端的消息就append一下然后刷新table,但是这个就非常头疼,如果要是消息很频繁,那么reload的频率是很高的,所以可以设置timer,每秒刷新一次。因为聊天消息不能只取最后一次,所以不能用上面的限流方式而用timer。

2. 队列上限

我们的礼物以及消息队列可能会有很多,尤其是礼物队列,因为礼物要一个一个展示,所以会排个队(注意这里还是应该有高级礼物优先展示的哦),如果队列东西很多,那么其实很多到最后没有时间展示,毕竟你如果送个礼物,队列里面有2000个每个1秒那也得半小时以后看到,其实送礼的人是没有感知的,所以应该设置一个队列容纳的上限,如果达到了上限最早最旧的先被丢弃,毕竟放入那么久了没有意义了就。

3. 进入直播关闭GPS、清空image缓存等

其实进入直播以后,大多主播的位置是不会变的,但长期直播对系统消耗挺大的,最好能关掉所有不必要的东西,例如GPS,最好再主播开播之前记录一下地理位置以后,进入就关掉GPS,否则它会一直在后台获取非常耗电。同理的还有陀螺仪。

另外就是把SDWebImage缓存置小一点,腾出一些内存,不同机型最好不一样。进直播以后就把已经缓存的清掉,只清理内存,磁盘缓存不用的,所以木有影响。然后改一下配置,退出直播以后再还原缓存上限。

有一个小tip,就是可以通过XCode的仪表盘,点击energy电量消耗,可以看是不是有GPS耗电占比,如果有则代表开启了GPS并且耗电量大应该关掉。

4. 主播直播帧率采集 and 大型活动保障

这个其实就是应该由后端下发采集码率分辨率之类的,因为分辨率帧率对性能影响最大了,码率之类的还其实还好。

在大型活动之前,如果知道今天晚上很大可能直播们会收到很多礼物,应该找到那些低端机型的主播,提前和他们说好将他们的帧率降低,保证直播的稳定性。

还有一些反正就是不影响他们直播体验的能关就关,比如礼物特效、手势之类的,反正直播端关掉观众还是可以看到礼物特效的。

这些其实就是由后端下发很多开关,最好是可以及时生效,如果不可以至少提前一天下发给主播们,关闭没用的~

这里注意主播和观众不一样的哈,对于观众而言,码率帧率并不是导致他们卡顿的原因。

5. 礼物object用数量字段替代创建新对象(礼物聚合)

观众端如果收到了很多相同的礼物消息,就会创建很多个礼物对象,但是有的时候其实是重复的礼物,例如10个火箭。每个对象创建都是有消耗的,占内存很大,如果可以用创建一个火箭对象标记一个数量10来替代创建10个对象会好很多。

6. 礼物资源限制

贴脸礼物之类的分辨率最好不要太大,最好限制一下(手写、svga、视频礼物),需要引入资源上传和校验平台。毕竟礼物加载是占内存的啊。

7. 建立性能测试流程

主要是内存、CPU、GPU

例如需要看进出直播间的内存能不能恢复到初始位置,CPU以及GPU多少。内存和CPU可以用instrument看~

主播端内存不出问题是很重要的,毕竟如果有问题直播2个小时就崩了,而且媒体层很容易有问题。

每次发版前需要将,从大型活动录制脚本(2000条聊天记录 + 2000礼物),在发版前跑一次看CPU之类的。以及发版前最好看一下这个版本各个指标的问题,例如卡顿之类的。

更新三方SDK可能会影响编码异常,新增大功能可能内存会涨的很明显。这些都需要测试以及单独看接入的影响。

8. 动态修正

卡顿和温度关系比较大。(温度到3就有问题)

视频性能有问题的话就降帧,以及去掉动画(手机卡不卡热不热)。要找出耗CPU和GPU的并且即使没有对主播没有太大影响的东西。就像动画、礼物帧数啥的。

等主播手机温度恢复以后再恢复正常。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容