
手机上的算法优化
以具体案例说明手机上如何进行算法优化
tim514
The best thing:still has hair
展开
-
手机上的算法优化 —— cache miss
【前言】cache是利用局部性原理(时间、空间),更好的解决硬件间速率不匹配的问。现代CPU的Cache一般分为三级:L1,Cache生产成本最高,容量最小,但是速度最快,处理器访问一级Cache中的数据一般只需要3~5个指令周期,一级Cache又分为数据Cache和指令Cache,分别缓存数据和指令;L2,Cache不区分数据和指令,容量较大,速度较慢;L3,Cache也称LLC(Last Level Cache),容量最大,而速度更慢。.在多核时代,一般一颗CPU中,每核都有独立原创 2022-01-10 17:44:04 · 2345 阅读 · 0 评论 -
手机上的算法优化 —— 分支优化
【前言】作为一个程序猿,if - else的使用会贯穿我们的整个职业生涯,但是有句话说的好,成年人不做选择题,那我们应该如何避免选择题呢?【Show me the fucking code!】if(condition 1) { 分支流程1} else if(condition 2) { 分支流程2} ……else { 分支流程n}【违反开放、封闭原则】: 新增一种判断时,会新增一个if-else分支【函数表优化】针对与上述原...原创 2022-01-06 16:19:13 · 333 阅读 · 0 评论 -
手机上的算法优化 —— 系统调用统计
【前言】当我们的程序频繁使用系统调用,也会造成大量的功耗,我们可以同过strace来统计我们的程序系统调用。【STRACE】strace: Process 15131 detached% time seconds usecs/call calls errors syscall------ ----------- ----------- --------- --------- ---------------- 34.83 0.055493原创 2021-12-15 19:44:15 · 176 阅读 · 0 评论 -
手机上的算法优化 —— 软件耗电排查
【前言】手机功耗分为: 硬件功耗与软件功耗。【硬件功耗】硬件功耗计算函数在:processMiscUsage()private void processMiscUsage() { addUserUsage(); // 多用户中每个用户的耗电量 addPhoneUsage(); // 通话耗电量 addScreenUsage(); // 屏幕耗电量 addWiFiUsage(); // wifi耗电量 addBluetoothUsage(原创 2021-12-14 20:07:14 · 499 阅读 · 0 评论 -
手机上的算法优化 —— 锁优化
【前言】原创 2021-12-13 16:03:20 · 121 阅读 · 0 评论 -
手机上的算法优化 —— NEON指令集优化
【前言】原创 2021-12-13 15:24:14 · 322 阅读 · 0 评论 -
手机上的算法优化 —— 内存优化
【前言】原创 2021-12-13 15:23:27 · 231 阅读 · 0 评论 -
手机上的算法优化 —— qos优化
【前言】原创 2021-12-13 15:22:04 · 258 阅读 · 0 评论 -
手机上的算法优化 —— 线程优先级设定
【前言】每个程序猿都希望自己的程序能跑的快一点,这样就不会有性能组或者其他related module来吐槽你。这样程序猿的头发就可以少掉一点,这样程序猿就有更多时间去打游戏,谈恋爱,为中国的人口增长做出一点自己的贡献。 而现实是每个程序猿都是这么想的,导致所有程序都成为了RT,那么如果你新写了一个程序,你一定要卷死他们,set nice 最低,set priority最高,这样你就会成为程序猿里面头发最多的。【priority是什么】 #includ...原创 2021-12-13 15:21:22 · 1947 阅读 · 0 评论 -
手机上的算法优化 —— context优化
【前言】原创 2021-12-13 15:20:42 · 121 阅读 · 0 评论 -
手机上的算法优化 —— 中断irq affinity
【前言】原创 2021-12-13 15:20:03 · 332 阅读 · 0 评论 -
手机上的算法优化 —— CPU Boost
【前言】程序跑的快慢,一方面在于程序猿怎么写,一方面在于CPU怎么跑,程序你写的再好,也不如人家CPU快你千百倍,你是单片机的速度,我是光速,你细品。。。【CPU boost】...原创 2021-12-12 20:39:32 · 1725 阅读 · 0 评论 -
如何完成一项任务?
【前言】 在带领团队做项目的时候发现从零开始完成一项任务对于团队的leader来说是一项巨大的考验。打个比方我接到一项任务,只是leader简单的一句话:完成触控定制化方案的落地。所有人看到这句话的第一反应是好复杂,因为我们会联想到各种各样的场景,各种各样的困难点。而一般人的第一感觉是:这个事情我做不了,太难了!而当你问他难点时,他可以找出一万个理由。而问他解决方法时,可能得到的回答却是zero。这是因为这个任务本身就太复杂了吗?我的回答是: YES ...原创 2021-12-09 15:26:56 · 1027 阅读 · 0 评论 -
手机上的算法优化 —— CPU绑定(CPU affinity)
【前言】写了一段时间博客发现,以实际例子来说明一件事,可能会让读者更容易理解那些知识。从今天开始从手机优化的案例来逐篇对算法的优化做一个简单的总结专栏。1. 为什么需要绑核操作?需求决定一切:需要程序更快执行完成 需要程序避开频繁的CPU调度 需要屏蔽干扰条件验证算法的性能通常,我们会把进程绑定到大核簇或者小核簇,或者当个cpu上面,以提高程序执行效率。2. 如何找到我们需要的CPU核? 通过shell可以看到SOC的CPU信息:cat proc/cpuinf..原创 2021-12-09 15:40:15 · 3068 阅读 · 0 评论