[转载] 视频号直播:如何进一步降低功耗占用?

原文地址
作者:rhythm,来自微信客户端团队

一、背景

功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种用户观看时长特别久的场景。怎样能在不影响主体验的前提下,进一步优化 「iOS视频号直播的功耗占用」,本文给出了一个不太一样的答案。

阅读全文 »

[转载] 微信移动端数据库组件WCDB系列(二)— 数据库修复三板斧

原文地址

前言

长久以来SQLite DB都有损坏问题,从Android、iOS等移动系统,到Windows、Linux
等桌面系统都会出现。由于微信所有消息都保存在DB,服务端不保留备份,一旦损坏将导致用户
消息被清空,显然不能接受。

我们即将开源的移动数据库组件 WCDB (WeChat Database),致力于解决 DB 损坏导致数据丢失的问题。

之前的一篇文章《微信 SQLite 数据库修复实践》介绍了微信对SQLite数据库修复
以及降低损坏率的实践,这次再深入介绍一下微信数据库修复的具体方案和发展历程。

阅读全文 »

[转载] 微信移动端数据库组件WCDB系列(一)- iOS基础篇

原文地址

前言

WCDBWeChat DataBase)是微信官方的移动端数据库组件,致力于提供一个高效易用完整的移动端存储方案。

它包含三个模块:

  • WCDB-iOS/Mac
  • WCDB-Android
  • 数据库损坏修复工具WCDBRepair

目前正在筹备开源中。

阅读全文 »

转载 为什么要从FMDB迁移到WCDB

原文地址

背景

WCDB开源至今已两个月有余,我们在不断迭代功能、完善文档的同时,也与来自世界各地的开发者进行交流,帮助他们更快地了解、掌握WCDB。这其中,也不乏使用FMDB的开发者。他们正准备将项目的数据库模块改为WCDB。

对于一个已经上线运行的项目,数据库这类基础组件与业务的耦合通常较多,迁移有一定工作量的。因此,开发者通常会做很多预研,以确定是否进行迁移。

WCDB在Github的wiki上提供了专门的教程,帮助使用FMDB的开发者进行迁移。同时,也希望通过本文全面地介绍WCDB和FMDB在使用方式、性能等方面的差异,以及迁移中可能遇到的问题,帮助开发者决定是否进行迁移。

阅读全文 »

转载 微信iOS SQLite源码优化实践

原文地址

前言

随着微信iOS客户端业务的增长,在数据库上遇到的性能瓶颈也逐渐凸显。在微信的卡顿监控系统上,数据库相关的卡顿不断上升。而在用户侧也逐渐能感知到这种卡顿,尤其是有大量群聊、联系人和消息收发的重度用户。

我们在对SQLite进行优化的过程中发现,靠单纯地修改SQLite的参数配置,已经不能彻底解决问题。因此从6.3.16版本开始,我们合入了SQLite的源码,并开始进行源码层的优化。

本文将分享在SQLite源码上进行的多线程并发、I/O性能优化等,并介绍优化相关的SQLite原理。

阅读全文 »

[转载] 深入理解iOS Jetsam机制,助力提升Flotsam召回率

原文地址

导读

本文将深入介绍 iOS 系统中的 Jetsam 机制,探讨其原理和作用。Jetsam 机制负责在内存不足时终止进程以释放内存资源,了解 Jetsam 的工作原理和相关策略,可以帮助开发者优化应用程序的内存使用,提高 Flotsam 召回率。

Flotsam 是快手定义的指标,是指 iOS 上未被监控捕获到的前台异常退出,包括但不限于由于内存溢出引起的退出。与 Jetsam 不同,Flotsam 更多地关注那些零碎、尚未明确归因的异常退出。了解 Jetsam 的工作原理和相关策略,对开发者来说,不仅有助于优化应用内存使用,还能显著提高 Flotsam 召回率,进一步提升应用的稳定性和用户体验。

阅读全文 »

[转载] 高内聚,可靠软件设计的支柱

原文地址

【编者按】高内聚是软件架构中经常被忽视的基石。本文将介绍高内聚的含义,重要性和实现高内聚的方法,如遵循单一职责原则、分解复杂的类、保持内聚的操作集和避免”上帝”对象等。

阅读全文 »