精华内容
下载资源
问答
  • 微信小程序优化建议_小程序优化建议setDatasetData是微信小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法前,先简单介绍一下setData背后的工作原理。工作原理微信小程序的视图层...

    微信小程序优化建议_小程序优化建议

    setData

    setData微信小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法前,先简单介绍一下setData背后的工作原理。

    工作原理

    微信小程序的视图层目前使用 WebView 作为渲染载体,而逻辑层是由独立的 JavascriptCore 作为运行环境。在架构上,WebView 和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道。当前,视图层和逻辑层的数据传输,实际上通过两边提供的evaluateJavascript所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境。

    evaluateJavascript的执行会受很多方面的影响,数据到达视图层并不是实时的。同一进程内的 WebView 实际上会共享一个 JS VM,如果 WebView 内 JS 线程正在执行渲染或其他逻辑,会影响 evaluateJavascript 脚本的实际执行时间,另外多个 WebView 也会抢占 JS VM 的执行权限;另外还有 JS 本身的编译执行耗时,都是影响数据传输速度的因素。

    常见的 setData 操作错误

    1. 频繁的去 setData

    在我们分析过的一些案例里,部分微信小程序会非常频繁(毫秒级)的去setData,其导致了两个后果:

    • Android 下用户在滑动时会感觉到卡顿,操作反馈延迟严重,因为 JS 线程一直在编译执行渲染,未能及时将用户操作事件传递到微信小程序的逻辑层,逻辑层亦无法及时将操作处理结果及时传递到视图层;
    • 微信小程序渲染有出现延时,由于 WebView 的 JS 线程一直处于忙碌状态,逻辑层到页面层的通信耗时上升,视图层收到的数据消息时距离发出时间已经过去了几百毫秒,渲染的结果并不实时;

    2. 每次 setData 都传递大量新数据

    setData的底层实现可知,我们的数据传输实际是一次evaluateJavascript脚本过程,当数据量过大时会增加脚本的编译执行时间,占用 WebView JS 线程。

    3. 后台态页面进行 setData

    当页面进入后台态(用户不可见),不应该继续去进行setData,后台动态页面的渲染用户是无法感受的,另外后台态页面去setData也会抢占前台页面的执行。

    图片资源

    目前微信小程序图片资源的主要性能问题在于大图片和长列表图片上,这两种情况都有可能导致 iOS 客户端内存占用上升,从而触发系统回收小程序页面。

    图片对内存的影响

    在 iOS 上,微信小程序的页面是由多个 WKWebView 组成的,在系统内存紧张时,会回收掉一部分 WKWebView。从过去我们分析的案例来看,大图片和长列表图片的使用会引起 WKWebView 的回收。

    图片对页面切换的影响

    除了内存问题外,大图片也会造成小程序页面切换的卡顿。我们分析过的案例中,有一部分微信小程序会在页面中引用大图片,在页面后退切换中会出现掉帧卡顿的情况。

    当前我们建议开发者尽量减少使用大图片资源。

    代码包大小的优化

    小程序一开始时代码包限制为 1MB,但我们收到了很多反馈说代码包大小不够用,经过评估后我们放开了这个限制,增加到 2MB 。代码包上限的增加对于开发者来说,能够实现更丰富的功能,但对于用户来说,也增加了下载流量和本地空间的占用。

    开发者在实现业务逻辑同时也有必要尽量减少代码包的大小,因为代码包大小直接影响到下载速度,从而影响用户的首次打开体验。除了代码自身的重构优化外,还可以从这两方面着手优化代码大小:

    控制代码包内图片资源

    小程序代码包经过编译后,会放在微信的 CDN 上供用户下载,CDN 开启了 GZIP 压缩,所以用户下载的是压缩后的 GZIP 包,其大小比代码包原体积会更小。 但我们分析数据发现,不同小程序之间的代码包压缩比差异也挺大的,部分可以达到 30%,而部分只有 80%,而造成这部分差异的一个原因,就是图片资源的使用。GZIP 对基于文本资源的压缩效果最好,在压缩较大文件时往往可高达 70%-80% 的压缩率,而如果对已经压缩的资源(例如大多数的图片格式)则效果甚微。

    及时清理没有使用到的代码和资源

    在日常开发的时候,我们可能引入了一些新的库文件,而过了一段时间后,由于各种原因又不再使用这个库了,我们常常会只是去掉了代码里的引用,而忘记删掉这类库文件了。目前小程序打包是会将工程下所有文件都打入代码包内,也就是说,这些没有被实际使用到的库文件和资源也会被打入到代码包里,从而影响到整体代码包的大小。

    展开全文
  • MySQL优化建议

    千次阅读 热门讨论 2020-12-23 11:50:20
    仅个人总结,欢迎一起交流! MySQL优化的本质: ...以下为本人总结的部分优化建议: 选择InnoDB引擎。InnoDB引擎支持事务、行级锁、并发性能更好,CPU及内存缓存页优化使得资源利用率更高。 使用UTF8

    仅个人总结,欢迎一起交流!

    MySQL优化的本质:

    1. 结合MySQL数据库的主要特性(数据存储与数据查询),使得数据存储占用空间更小,更新、查询速度更快,并发程度更高,使得服务器资源利用率更高。

    2. 尤其是对于大数据量、高并发的业务场景,避免因不合理的设计拖垮数据库,造成数据库宕机、数据丢失、业务无法正常进行等问题,保证服务的可用性。

    以下为本人总结的部分优化建议:

    • 选择InnoDB引擎。InnoDB引擎支持事务、行级锁、并发性能更好,CPU及内存缓存页优化使得资源利用率更高。

    • 使用UTF8字符集,UTF-8MB4。无需转码,不存在乱码的风险,更节省空间。

    • 减少存储过程、视图、触发器等使用,尽量将计算逻辑设计运用至业务代码层面,避免因耗时计算影响到数据库的并发,严重时拖垮数据库。

    • 使用自增主键。Innodb是基于B+树的索引组织表,使用自增主键,数据行写入可以提高插入性能,可以避免页分裂,减少表碎片提升空间和内存的使用。

    • 禁止使用外键,外键导致表和表之间的耦合。更新和删除操作涉及关联的表,极大地影响sql的性能,甚至可能造成死锁。

    • 禁止使用TEXT、BLOB类型。更多的磁盘和内存空间将被浪费,且大字段查询将会清理掉热点数据的缓存,导致缓存命中率急剧下降并影响数据库性能。如有必要,创建另一个表记录,将热点数据与大字段数据分离。

    • 适当的建立索引,避免全表扫描。

    • 不要过多的建立索引,建议控制在5个以内。索引的本质是对数据顺序的记录,占用存储空间,不宜过多。可使用EXPLAIN来查看了解索引命中情况。

    • 索引的建立原则:为常用于where或orderby语句后的字段建立索引,但对于数据值变化少(区分度不大)的情况不适用,如“性别”字段,一般值为“男/女/未知”等,建立这种索引并不能加快查询速度,却浪费了磁盘空间。

    • 更新十分频繁的字段上不宜建立索引。更新操作会变更B+树,重建索引,这个过程十分耗性能。

    • 联合索引的建立要满足“最左匹配”原则,将命中率更高的字段建立在最前面。

    • 列值设置默认值,禁止null值,以防破坏索引,影响查询效率;减少额外空间占用。

    • 不在where语句后使用函数或者表达式计算,会造成索引失效。

    • 不使用NOT IN和<>操作,%开头的模糊查询,避免全表扫描;

    • 避免使用属性隐式转换。如phone='123456789’为字符串不写成phone=123456789。

    • 避免SELECT *,从数据库里读出的数据越多,查询就会变得越慢。另外,如果数据库服务器和WEB服务器是两台独立的服务器,这还会增加网络传输的负载。

    • 尽量建立覆盖索引,避免回表查询。

    • 唯一/普通索引的选择。唯一索引需要唯一性检查,不能利用 change buffer特性。需要频繁从磁盘读取数据,涉及随机 IO 的访问,效率变低。所以能使用普通索引的场景尽量不使用唯一索引。

    • 更新条件列要使用索引,避免无法通过索引键加锁而升级为表级锁。

    • varchar字段过长时考虑使用前缀索引。

    • 禁止对大型表使用JOIN查询或子查询。会生成临时表,消耗内存和CPU,极大地影响数据库性能。关联查询可在业务代码层拆分为多次单表查询。

    • 避免存储大文件。大文件可存至专门的文件系统,如OSS。

    • 根据业务需要合理地确定字段类型与长度,避免空间浪费。

    • 大事务尽量拆成多个小事务,减少锁记录和时间。

    • 拆分大的 DELETE 或 INSERT 语句,避免较长时间的锁表,防止应用被crash。

    • 最长事务代码块尽量放在程序的最后执行。

    • 尽量减少基于范围的数据检索过滤条件更新,避免间隙锁带来的影响而锁定了不该锁定的记录。

    • 注意间隙锁,批量更新&删除操作尽量避免并发,以免造成意外的死锁。

    • 数据量大的业务系统,考虑分库分表,按业务系统的划分垂直分库,单表数据量过大考虑分表(水平/垂直分表)

    最后,送大家一份免费MySQL学习资料,立即前往>>>。学无止境,愿大家都能够少走弯路。

    展开全文
  • WPF 性能优化建议

    千次阅读 2019-04-12 10:10:25
    本章讲述:WPF 性能优化建议 20180930 WPF性能优化问题:运行软件发现CPU使用率很大(80%-95%),程序中含有委托,线程,定时器的处理,之前优化时,主要优化线程和定时器相关线程方面的处理,但是效果甚微; 无意...

    本章讲述:WPF 性能优化建议

    20180930 WPF性能优化问题:运行软件发现CPU使用率很大(80%-95%),程序中含有委托,线程,定时器的处理,之前优化时,主要优化线程和定时器相关线程方面的处理,但是效果甚微;

    无意间看到博客中说程序界面中使用了投影效果会造成CPU使用率高,就试着修改,没想到,软件运行稳定后CPU使用率下降到了30%左右。

    现整理一下WPF性能优化建议:

    1、尽量不使用DropShadowEffect投影效果,消耗资源很大;

    2、在自定义控件,尽量不要在控件的ResourceDictionary定义资源,而应该放在Window或者Application级。因为放在控件中会使每个实例都保留一份资源的拷贝;

    3、尽量多使用Canvas等简单的布局元素,少使用Grid或者StackPanel等复杂的,减小开销;

    4、少用Margin Padding尤其避免嵌套使用;

    5、尽量使用Static Resources不用DynamicResource;

    6、计时尽量使用DispatcherTimer替代Timer;

    7、自定义控件尽量从轻量级的控件继承;

    8、需要绑定的属性设置为DependencyProperty的依赖项属性效率要高很多,不要自己写继承自INotifyPropertyChanged的属性:http://www.codeproject.com/Articles/62158/DependencyProperties-or-INotifyPropertyChanged

    9、文字少的时候用TextBlock或者label,长的时候用FlowDocument;

    10、绑定的字符串用Textblock;不用label;

    11、如果正在绘制的内容需要频繁地重新绘制,考虑设置各Uelement对象的CacheMode="BitmapCache";

    12、避免使用 Run 来设置文本属性:(MSDN)

       <TextBlock>
          <Run FontWeight="Bold">Hello, world</Run>
        </TextBlock>
        <TextBlock FontWeight="Bold">
          Hello, world
        </TextBlock>

    13、尽量不要过分依赖使用值转换器;尽量少使用第三方类库;尽量不要设置控件Opacity属性,而用Visibility

    14、加快WPF程序的启动速度:

        (1).减少需要显示的元素数量,去除不需要或者冗余的XAML元素代码.

        (2).使用UI虚拟化,只显示当前需要显示的元素.

        (3).不要把不要显示的自定义控件隐藏在主界面中,虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置.

    15、 耗时操作放在放在非UI线程上处理,保持UI的顺畅。处理完成后如果需要在UI上展示,调用Dispatcher.BeginInoke()方法。更多内容参考WPF QuickStart系列之线程模型(Thread Model);

    16、关于Data Binding,根据实际情况对Binding指定不同的Mode,性能OneWay优于TwoWay。另外修正掉系统中Binding错误,可以在Visual Studio的输出日志中查找System.Windows.Data Error;

    17、Resources: 系统资源,通常情况下我们会把样式资源都统一到App.xaml中,这是很好的,便于资源的管理。不过尽量把多次重复用到的资源放到App.xaml中。例如某些页面的资源只会在当前页面中使用到,那么可以把资源定义在当前页面; 如非必要,不要使用DynaicResource,使用StaticResource即可;

    18、对Item类型控件重写时,使用VirtualizingStackPanel作为ItemPanel,这样列表资源可以只渲染当前需要的内容。不过如果设置CanContextScrol="True"会阻止虚拟化,另外使用VirtualizingStackPanel时,可以设置VirtualizingStackPanel.VirtualizationMode="Recycling", 这样已经显示过的列表不会被重复创建和释放掉。

    19、尽量少的使用Animation,尤其在程序启动时,Animation渲染时会占用一些CPU资源。

    展开全文
  • Oracle数据库查询优化建议

    万次阅读 2017-01-15 13:18:09
    Oracle数据库查询优化建议
    1.尽量少的对数据库操作,改多次查询操作为一次查询,多次循环操作数据库会影响程序的响应时间,
    2.数据库设计时也要避免多个对象之间的多层深层内嵌,避免外键无限的关联,这将导致查询一条数据会关联很多项的数据,此条数据太大,
    最终导致数据库查询等操作的响应时间太长。如果数据库设计出现多层深层内嵌时,查询等操作响应时间太久,可考虑使用视图查询。
    展开全文
  • IHS配置优化建议

    千次阅读 2016-05-08 15:46:41
    HIS配置优化建议   HIS实际上是IBM和Apache合作的一个产物,它基于稳定版的Apache webserver代码树,然后做了一些扩展,优化而来,所以在本质上各个参数和Apache webserver基本上是一样的,如下就从四个方面...
  • 干货 | Elasticsearch通用优化建议

    千次阅读 2018-08-19 21:26:32
    网上有很多结合自己实际应用场景的相关优化建议,但“对症下药”才是关键。 实际,官网已经有非常明确的相关优化建议。如果没有实战场景,一些特性的理解可能不到位。为此,我特定将官网建议做了翻译,并加了结合...
  • Oracle:SQL优化建议

    千次阅读 2018-06-14 13:49:34
    Oracle:SQL优化建议 下述为34条Oracle中SQL的优化建议,仅供参考。 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的...
  • Mongodb性能调优 -性能优化建议

    万次阅读 2016-12-19 12:00:05
    3. Mongodb 性能优化建议 TST官网 关于Mongodb的几个大事件 1.根据美国数据库知识大全官网发布的DB热度排行,Mongodb的热度排名从2014年的第5名,在2015年跃升为第4名,仅次于主流DB(Oracle、MySQL、SQLServer)...
  • unity几种优化建议

    千次阅读 2016-10-14 16:28:20
    最简单的优化建议: 1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。 2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unlit目录下的。它们更...
  • db2advis DB2索引优化建议

    千次阅读 2017-02-08 10:13:50
    db2advis DB2索引优化建议用途:db2advis用于自动根据表、索引、物化视图统计值,自动分析sql执行效率,并给出优化建议; 此命令可以在服务器上执行,也可以在客户端执行(需要先进行编目)。1、db2advis优化建议...
  • sql优化建议

    千次阅读 热门讨论 2016-07-25 15:31:18
    我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论与学习,收获了一些对优化sql比较有帮助的几点建议,同时在应用开发的实践中,证实的确...
  • RabbitMQ的几种工作模式和优化建议

    千次阅读 2020-06-28 16:33:04
    RabbitMQ的几种工作模式和优化建议 1.组件介绍 1.Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输, 2. Exchange:消息交换机,它指定消息按什么规则,路由...
  • 基于PostgreSQL,总结几条常用的查询操作的优化建议,部分也适用于Oracle等数据库。 推荐工具书《greenplum企业应用实战》国内首本Greenplum方面的著作。 1.选择合适的分布键 分布键选择不当会导致重分布、数据...
  • Android内存优化建议

    千次阅读 2016-08-25 22:30:30
    这篇博客主要是总结一些内存优化技巧,大体包括编码优化、Bitmap优化优化ListView减少内存开销、布局优化、其他优化:  编码优化:  (1):使用更加轻量级的数据结构  使用ArrayMap和SparseArray代替我们常见的...
  • 近几年来,百度对用户体验的重视度越来越高,出台了很多算法来打击恶意影响用户体验的行为,这里提炼出截止2019年1月1日,对我们影响比较大的十大算法的核心内容和优化建议。 百度的算法是随着时间逐渐叠加,而不是...
  • 干货!Unity 几种优化建议

    千次阅读 2016-10-26 23:50:21
    最简单的优化建议: 1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。 2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unlit目录下的。它们更...
  • Unity开发-你必须知道的优化建议

    万次阅读 2014-01-09 16:03:00
    于是通读了unity的官方manuel,最后面几章都是精华,里面给了非常非常多的官方的优化建议,尤其是做移动平台的开发,这些建议就是非常重要的。我将官方manuel advanced后面的那几个章节的东西提炼了一下出来
  • ##CEPH Mimic版本 - Bluestore io过程、延迟分析及优化建议## Ceph bluestore与filestore相比较, 除了bluestore不需要写journal,就IO过程(流程)来讲大体上是类似的,OSD侧的io流程、过程调用分析网络上已经有很...
  • GREENPLUM优化建议

    千次阅读 2016-01-18 21:13:31
    尽量把数据分布键放在最前面,如果是分区表,那么接下来是分区键,并且在此基础上建议按照数据类型宽度从大到小的顺序排列比如先8 byte的列,再4字节,再2字节。 3. 数据分布键的选择: 数据分布均匀是保证GP高效...
  • 常用SQL语句的优化建议

    千次阅读 2020-03-25 16:57:04
    有关于优化SQL的建议 1. 查询SQL尽量不要使用select *,而是select具体字段。 反例子: SELECT * FROM employee; 正例子: SELECT id, NAME FROM employee; 理由: 只取需要的字段,节省资源、减少网络...
  • SQL优化建议30条

    千次阅读 2019-02-27 13:30:36
    1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中使用!=或&lt;&gt;操作符,否则将引擎放弃使用索引而进行全表扫描。 3、应...
  • 1查找元素的优化2改变DOM,包括添加,修改,删除DOM3改变DOM的样式类等1查找元素的优化 因为ID是唯一的,也有原始的方法,因此使用ID查找元素是最快的,其次的是根据类和类型查找元素,通过属性查找元素是最慢的,...
  • 小程序内用户帐号登录规范调整和优化建议>总结下来就是:微信要规范小程序内帐号登录功能,开发者、设计师来活啦! 1.服务范围开放的小程序 不限制用户注册,但是注册后无任何提示强制用户登录后才享...
  • uni app性能优化建议

    千次阅读 2020-03-21 09:22:42
    优化建议 使用自定义组件模式 使用自定义组件模式,在manifest中配置自定义组件模式(HBuilderX1.9起新建项目默认即为自定义组件模式)。 在复杂页面中,页面中嵌套大量组件,如果是非自定义组件模式,更新一个组件...
  • greenplum表级优化建议

    千次阅读 2017-02-17 13:50:01
    这里主要列出与GP优化的一些建议-PTA(PERFORMANCE TUNNING ADVICE)  PTA RULE No1  在完成大批量数据装载之后,针对目标表总是进行vacuum analyze操作。一方面是如果批处理操作失败,会浪费很多空间,这个...
  • 本文是对于一款火热游戏 穿越火线的辅助软件"卡秒器"的原理分析和给开发者的优化建议 基本介绍 很多人看到"卡秒器"这个词语是陌生的 甚至于大多的游戏玩家看到也是非常陌生 但是如果 你玩这款游戏 并且玩了一段时间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 590,822
精华内容 236,328
关键字:

优化建议