首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS_App性能优化(Energy Efficiency)指南整理

、最小化和延迟 `网络请求` 1、最小化网络请求 2、推迟网络请求 3、VoIP最佳做法 四、有效使用图形、动画、视频 五、优化位置和动作 1、降低位置准确性和持续时间 2、减少运动更新频率 六、优化通知...网络请求 1、最小化网络请求 降低媒体质量和尺寸 压缩资料 避免多余传输:缓存数据、使用可暂停可恢复传输 检查网络状态:网络不可用时,勿执行请求 提供取消操作 网络可用时,可尝试重试 2、推迟网络请求...批量传输:而不是等待用户点击后再多次请求 酌情创建可延迟网络请求:NSURLSession提供了background Session功能: let config = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier...清除不可见视图,如:移除屏幕、被遮挡、等等 尽可能使用较低动画帧率 在动画声明周期请保持一致帧率 避免在屏幕使用多个帧率,哪怕需要提高低帧率那个 开发游戏时使用推荐框架:SpriteKit...app应该空闲时活动 用户界面反应迟钝or缓慢 主线程大量工作 大量使用动画 大量使视图透明 交换 内存停滞和缓存未命中 内存警告 锁争用 上下文切换过多 过多使用计时器 屏幕绘制过多 磁盘

1.4K30

微信活动小程序性能优化实践

加载优化 加载优化主要思路如下: ? 该方案分为4步,分别为资源压缩、请求合并、延迟加载、数据缓存。...第二步,小图片base64入包,避免发送网络请求,大图片利用腾讯云压缩后下载,同时在微信小程序支持http2之前,我们合并了接口请求,提升了请求加载性能。...而我们能够操控各种点击、滚动事件都将拥堵在 webview js 线程,得不到响应。我们不妨来看下 setData 数据量与传输时间关系,如下所示: ?...优化前,FPS帧率波动大,平均帧率40FPS,最低帧率5FPS,优化后,FPS帧率较稳定,平均帧率达到了60FPS,最低帧率也有50FPS。 内存优化 渲染优化后,Ulink活动小程序整体快了很多。...不妨拿同类产品做个简单对比,如下所示: ? 可以看到,Ulink活动小程序,内存峰值比初始值仅高了68M,内存维持在350M左右,而微博小程序,内存峰值比初始值已经高了180M,内存还在持续增长。

6.6K60
您找到你想要的搜索结果了吗?
是的
没有找到

Python中并发编程(4)多线程发送网络请求

线程发送网络请求 我们使用https://www.vatcomply.com 来演示多线程发送网络请求。该提供了汇率查询API,我们可以像下面这样发送请求获取某种货币对其它货币汇率。...过多线程可能导致因请求过快而被网站封IP。 • 线程函数中使用print,可能导致输出混乱。 • 每个函数被委托给单独线程,这使得控制输入处理速率极其困难。...使用线程池 使用线程池创建指定数量线程,这些线程将消耗队列中工作项,直到队列变空。线程池带来好处: • 控制线程数量 • 减少创建线程开销。...我们fetch_rates函数向网站发送请求时可能因为网络等原因出错,然后该线程会结束(但该任务没有完成)。...我们只需在主线程中创建一个 Throttle 实例(例如 Throttle(10),rate=10,允许每1/10秒发送一个请求,rate越大则允许请求速度越快),并将其作为参数传递给每个工作线程

49721

windows 10 使用localhost作为地址执行网络请求延迟问题解决方案

使用localhost作为地址执行网络请求时会有2s延时,这个问题在Linux并不存在,本文分析并提出解决方案。...问题复现 主要体现在windows 下,python 使用 flask 将 localhost 作为地址时有2s延迟 原因分析 问题在于解析localhost时,优先按照ipv6地址解析,这个可以通过...ping命令验证: C:\Users\Admin>ping localhost 正在 Ping VVD [::1] 具有 32 字节数据: 来自 ::1 回复: 时间<1ms 来自 ::1 回复...: 时间<1ms 解决方案 关闭ipv6方案尝试过几次,都没有效果 修改host文件添加 127.0.0.1 localhost 也没有用 问题症结在于ipv6和ipv4优先级,如果ipv4...: 来自 127.0.0.1 回复: 字节=32 时间<1ms TTL=64 来自 127.0.0.1 回复: 字节=32 时间<1ms TTL=64 而且使用localhost做地址执行各种任务都快了很多

98610

百万级高并发mongodb集群性能数十倍提升优化实践(上篇)

从上图可以看出集群流量比较大,峰值已经突破120万/秒,其中delete过期删除流量不算在总流量里面(delete由触发删除,但是主上面不会显示,只会在从节点拉取oplog时候显示)。...原因是过期索引只在master节点触发,触发后主节点会直接删除调用对应wiredtiger存储引擎接口做删除操作,不会走正常客户端链接处理流程,因此节点看不到delete统计。.../expire-data/ Mongodb配置优化(网络IO复用,网络IO和磁盘IO做分离) 由于集群tps高,同时整点有大量推送,因此整点并发会更高,mongodb默认一个请求一个线程这种模式将会严重影响系统负载...Mongodb内部网络线程模型实现原理 mongodb默认网络模型架构是一个客户端链接,mongodb会创建一个线程处理该链接fd所有读写请求及磁盘IO操作。...网络线程模型优化方法 为了适应高并发读写场景,mongodb-3.6开始引入serviceExecutor: adaptive配置,该配置根据请求数动态调整网络线程数,并尽量做到网络IO复用来降低线程创建消耗引起系统高负载问题

2.5K31

探究 | Elasticsearch集群规模和容量规划底层逻辑

使用时可能带来性能问题:网络协议开销,延迟大和昂贵存储抽象层。 2.2 内存资源 2.2.1 JVM Heap 存储有关集群索引、分片、段和 fielddata 数据。...Elasticsearch 处理数据方式多种多样,但计算成本较高。 可用计算资源:线程池、线程队列。 CPU 内核数量和性能:决定着计算平均速度和峰值吞吐量。...这些目标可能需要更多内存和计算资源。 第一:问自己几个问题 您期望每秒峰值搜索量是多少? 您期望平均搜索响应时间是多少毫秒? 您期望数据节点几核 CPU,每核有多少个线程?...第三:吞吐量预估方法 峰值线程数 = 向上取整(每秒峰值检索请求数 _ 每个请求平均响应时间(毫秒)/1000) 线程队列大小 = 向上取整((每个节点物理 cpu 核数 _ 每核线程数 * 3...注意:在任何专用节点做出决策-节点、协调节点、机器学习节点、路由节点。

4.1K33

Android帧率监测与优化技巧

-- 应用其他配置 --> 启用硬件加速可以加速视图绘制,提高帧率。 异步任务 将耗时任务放在后台线程,以避免主线程被阻塞,导致帧率下降。...这包括网络请求、文件读写、数据库操作等。...kotlinx.coroutines.delay(1000) // 延迟1秒,模拟网络请求耗时 return "Network Data" } } 通过在后台线程执行网络请求...卡顿发生在网络请求帧率监测数据清晰地显示卡顿问题发生在用户进行网络请求时候,帧率从 60 FPS 下降到 10 FPS。...CPU 使用率数据表明在网络请求期间,主线程 CPU 使用率迅速上升至 100%。 响应时间数据显示网络请求响应时间长达 5 秒以上,进一步印证了网络请求问题。

43450

视频直播基础知识

通过在网络各处放置节点服务器所构成在现有的互联网基础之上一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点连接、负载状况以及到用户距离和响应时间等综合信息将用户请求重新导向离用户最近服务节点...CDN基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中地区或网络中,在用户访问网站时,利用全局负载技术将用户访问指向距离最近工作正常缓存服务器,由缓存服务器直接响应用户请求...4、个人直播推流,播直接推流到直播服务平台,采用网络多种多样,有线网,wifi,移动网络,小运营商宽带等,网络波动比较大,不能保证网络质量,一般播放卡顿都是来源于播。...卡顿引起原因如下: -- 帧率太低:如果播手机性能较差,或者有占CPU后台程序在运行,可能导致视频帧率太低。...码率曲线 帧率: 10秒平均帧率,理论帧率是恒定,如果出现了频繁波动,表明推流丢帧比较严重,必然会出现卡顿。 ?

7.7K93

云直播(CSS)“你问我答”第五季(2020.7月&8月)

是的,会按照混流后输出直播流收取转码费用。由于混流任务成功后不播放也消耗转码资源,混流转码费用会按照混流时长进行收费,跟普通转码播放时长计费有区别。 Q2:直播录制路数峰值如何计算?...一路直播流(一个流 ID)录制一种格式文件,即为一路直播录制任务,系统会按5分钟上报一次并发录制路数,取当月内最高峰值为直播录制路数月峰值。 Q3:非企业用户商用直播是否需要网络文化经营许可证?...云直播RTMP推流所使用默认端口号是1935 ,如果您测试时所在网络防火墙不允许1935端口通行,就会遇到连不上服务器问题。此时您可以通过切换网络(例如4G )来排查是不是这个原因导致问题。...(1)断流功能:一条直播中流,如果断流,则本次推流会被中断,观众端将无法观看直播。断流后,播端可以再次发起推流,继续直播活动。...(2)禁播功能:一条直播中流,如果禁播,则本次推流会被中断,观众端将无法观看直播。断流后,播端在一段时间内无法再次发起推流。(默认禁播7天,最多可支持90天) 云直播.png

95580

客户端Unity性能分析

其中主要参数包括PFS、Mono峰值、纹理峰值、网格峰值、动画峰值、音频峰值、DrawCalls、Tris峰值。 PFS: PFS是指画面每秒传输帧数,就是指动画或视频画面数。...如果帧率越高意味着界面越流畅,如果帧率较低会让人感觉显示不连贯即卡顿。通过一段连续 FPS 计算丢帧率来衡量当前页面绘制质量。对于手机而言一般要求平均PFS大于25。...当屏幕变化切换时候,程序需要绘制新元素展示在屏幕,界面的刷新速度决定了应用FPS值。所以,我们有必要分析应用不同界面下,元素绘制和渲染时间。...应用CPU和内存占用值,这两项数据可以简单表示应用资源占用情况。应用是否有其他操作导致CPU占用过高,使得刷新操作被延迟也会导致FPS值降低。...在unity 中每次引擎装备数据并通知GPU过程为一次Draw Call。所以DrawCalls是指cpu发送给gpu渲染请求数,请求中包括渲染对象所有的顶点、三角面、索引值、图元个数等。

5.2K63

微信小游戏直播在Android端跨进程渲染推流实践

小游戏直播本质就是把播手机屏幕内容展示给观众,自然而然地我们可以想到采用系统录屏接口MediaProjection进行视频数据采集。...但是最终这个方案被否决了,主要出于以下考虑: 1)需要展示系统授权弹窗; 2)需要谨慎处理切出小游戏后暂停画面推流情况,否则可能录制到其他界面,有隐私风险; 3)最关键一点:产品设计需要在小游戏展示一个评论挂件...我们也对LocalSocket进行了兼容性与性能测试,未出现不能传输或断开连接情况,仅在三星S6平均延迟超过了10毫秒,其余机型延迟均在1毫秒左右,可以满足我们预期。...复现后查看小游戏进程渲染帧率(即小游戏进程绘制到跨进程而来Surface帧率)发现可以达到不开直播时帧率。...为了确认问题: 1)我们找来了已经root手机,通过chrt命令提高编码线程优先级,观众端帧率立马上到了25帧; 2)另一方面,经测试如果在小游戏进程显示一个主进程浮窗(使主进程具有前台优先级)

1.1K10

Redis在持久化时产生延迟

如下图所示,清晰展示了延迟峰值: ? 您可以想象一下,如果您在fork()时候做一个延迟测试,那么在父进程fork()时候,所有请求延迟一秒(以上图为例)。...然而很明显是,每30分钟发生1秒延迟峰值不是很明显,因为这与在请求中均匀分布延迟峰值有很大不同。...如果是均匀分布峰值,如果访问某个页面需要对Redis服务器执行大量请求,则访问页面很可能会碰到延迟:这会严重影响服务质量。 然而,如上图所示,每运行30分钟后1秒延迟是完全不同事情。...如果您现在需要EC2 + Redis主机并且已禁用持久性,则最简单部署方式是禁用Redis实例自动重启,并使用Sentinel进行故障转移,以便崩溃服务器不会自动返回可用状态。...; 即使Redis是单线程处理命令,但是服务器配置最好还是需要双核,如果有多个Redis实例,那么核心数相应翻倍; 除了fork会引起延迟外,Redis中那些时间复杂度为O(n)也会引起性能毛刺,例如

83320

微信小游戏直播 — Android跨进程渲染推流实践

小游戏直播本质就是把播手机屏幕内容展示给观众,自然而然地我们可以想到采用系统录屏接口MediaProjection进行视频数据采集,这种方案有这些优点: 系统接口,实现简单,兼容性和稳定性有一定保证...需要谨慎处理切出小游戏后暂停画面推流情况,否则可能录制到其他界面,有隐私风险 最关键一点:产品设计需要在小游戏展示一个评论挂件(如下图),便于播查看直播评论以及进行互动,录屏直播会让观众也看到这个组件...我们也对LocalSocket进行了兼容性与性能测试,未出现不能传输或断开连接情况,仅在三星S6平均延迟超过了10毫秒,其余机型延迟均在1毫秒左右,可以满足我们预期。...LocalSocket作为跨进程音频数据传输方案,在延迟满足了直播需求。...为了确认问题,我们找来了已经root手机,通过chrt命令提高编码线程优先级,观众端帧率立马上到了25帧;另一方面,经测试如果在小游戏进程显示一个主进程浮窗(使主进程具有前台优先级),帧率可以上到

2.3K21

Android APP性能及专项测试

4、耗时 5、网络流量消耗 6、移动终端相关资源利用率 7、帧率 8、渲染等等.......但是有一些大型应用程序是无法忍受vmheapgrowthlimit限制 实际dalvik.vm.heapgrowthlimit和dalvik.vm.heapsize都是java虚拟机最大内存限制...NativeAPP消耗时间(埋点) 2)NativeAPP完整启动消耗时间(可以通过system.log获取) 3)Native调用RPC请求方法延迟时间(埋点) 4)RPC请求发出去过程中具体数据...BUG必须在特定真实运营商网络下才会发现) 2、通过代理方式模拟弱网环境进行测试(charles 硬延迟) 3、连接模拟弱网热点进行测试 热点模拟方法: 1)通过设置iPhone开发者模式之后共享热点...(硬延迟) 2)FaceBook开源ATC(可使用树莓派来搭建ACT环境) 用户体验需要做: 1)在应用中统一弱网加载界面样式、动画效果、菊花icon等 2)统一网络错误、服务端错误、超时等展现给用户界面和提示语句

3.8K32

Android APP性能及专项测试

4、耗时 5、网络流量消耗 6、移动终端相关资源利用率 7、帧率 8、渲染等等.......但是有一些大型应用程序是无法忍受vmheapgrowthlimit限制 实际dalvik.vm.heapgrowthlimit和dalvik.vm.heapsize都是java虚拟机最大内存限制...NativeAPP消耗时间(埋点) 2)NativeAPP完整启动消耗时间(可以通过system.log获取) 3)Native调用RPC请求方法延迟时间(埋点) 4)RPC请求发出去过程中具体数据...BUG必须在特定真实运营商网络下才会发现) 2、通过代理方式模拟弱网环境进行测试(charles 硬延迟) 3、连接模拟弱网热点进行测试 热点模拟方法: 1)通过设置iPhone开发者模式之后共享热点...(硬延迟) 2)FaceBook开源ATC(可使用树莓派来搭建ACT环境) 用户体验需要做: 1)在应用中统一弱网加载界面样式、动画效果、菊花icon等 2)统一网络错误、服务端错误、超时等展现给用户界面和提示语句

1.9K31

架构设计(一)

高性能数据库:读写分离 本质:将访问压力分散到集群中多个节点,但没分散存储压力。 基本原理:将数据库读写操作分散到不同节点 + 从  集群: 负责读/写,从负责读。...主机负责读写,从机负责读 数据库主机通过复制将数据同步到从机,每个数据库都存了所有数据 业务服务器将写发给数据库,读发给从数据库。 有两个复杂点:1. 主从复制延迟; 2. 分配机制 1....复制延迟 先假设延迟1秒,数据写入主库后立刻访问从库,读取不到最新数,例如注册,会有业务问题。...,去专门处理这个连接请求。  ...每次有新连接就新建一个线程,专门处理这个连接请求

51920

洞察|黑名单禁演?大数据解读用户最关心网络直播话题

昨天,文化部出台《文化部关于加强网络表演管理工作通知》(以下简称《通知》),首次明确了表演者为直接责任人,今后网络直播将实行随机抽查,表演者一旦“黑名单”将被全国禁演。...可见,关注直播的人群主要集聚在校园,学生成为关注网络直播主要群体。这部分人群不仅是“看客”,还承担了“播”角色。...网络直播正在进入全民时代,每个人都有一颗想成为“网红”心!“人人皆可做主播”诱人口号吸引着更多普通人。此外,大家还关心什么平台好玩,播怎么赚钱等问题。...揭秘网络播生意经 那么,网络播到底怎么赚钱呢?相信绝大数人都特别关注这个问题。以下是百度知道大数据中揭示几种播主要赚钱途径,仅供参考。 ?...百度知道依托海量问答数据对视频直播领域及话题进行数据剖析,谨以此献给想成为网红播们和享受着直播乐趣观众们,网络直播未来值得各位期待。 内容来源:大数据观察

80650

浅谈软件性能提升相关概念

例如,如果一款游戏帧率很低,就无法发售。这就是为什么许多游戏开发者使用一种不同编程范式——面向数据设计,以实现良好性能。...看起来是瓶颈函数实际可能是在等待其他操作完成。因此,需要在其他地方寻找瓶颈。有专门 *profiler *用于多线程和多处理器应用程序——Coz。...峰值性能 有时,热循环是以最高性能运行。它正在以最佳方式使用硬件,而且只做必要操作。检查热循环是否以峰值性能运行是了解是否存在性能改进空间另一种方法。...在这里,我们感兴趣是优化延迟:我们希望系统对输入作出反应,要么满足约定某个时间,要么尽快作出反应。 第二个例子是一个训练神经网络高性能系统。在这里,响应时间并不关键。...吞吐量敏感系统在其他地方也很常见:视频渲染、神经网络训练等。 延迟敏感系统建立在吞吐量敏感系统之上。在实现最大吞吐量之后,整个系统,包括硬件、操作系统、网络堆栈等,都会针对延迟进行优化。

38830

Mongos连接模型探究

one-thread-per-connection模型相当传统(落后),该模型将线程切换/调度交给操作系统管理,带来结果就是:延迟不可控。...mongos采用ASIO网络框架,每个用户请求通过网络实践回调/异步状态机Reactor模型驱动。ReactorPool被划分为N个ReactWorker,每个Worker对等处理用户请求。...如果有流量峰值,或后端mongod处理不过来,则会创建新连接,峰值过去后,多余连接会在refreshRequrement指定时间后释放。...则minConnection最好设置大于 1000/2(两副本)/100(10ms)=5,从而防止冷启动带来延迟开销。...如果单机多部署,则需要考虑线程切换带来影响。比较合理mongos单机部署多方式是使用cgroups或taskset将mongos binding到对应

59830

Mongos连接模型探究

one-thread-per-connection模型相当传统(落后),该模型将线程切换/调度交给操作系统管理,带来结果就是:延迟不可控。...mongos采用ASIO网络框架,每个用户请求通过网络实践回调/异步状态机Reactor模型驱动。ReactorPool被划分为N个ReactWorker,每个Worker对等处理用户请求。...如果有流量峰值,或后端mongod处理不过来,则会创建新连接,峰值过去后,多余连接会在refreshRequrement指定时间后释放。...则minConnection最好设置大于 1000/2(两副本)/100(10ms)=5,从而防止冷启动带来延迟开销。...如果单机多部署,则需要考虑线程切换带来影响。比较合理mongos单机部署多方式是使用cgroups或taskset将mongos binding到对应

1.4K30
领券