性能优化

三十分钟掌握Webpack性能优化

一曲冷凌霜 提交于 2019-12-02 12:33:15
目录 一、优化构建速度 1.1 缩小文件的搜索范围 1.2 使用DllPlugin减少基础模块编译次数 1.3 使用HappyPack开启多进程Loader转换 1.4 使用ParallelUglifyPlugin开启多进程压缩JS文件 二、优化开发体验 2.1 使用自动刷新 2.2 开启模块热替换HMR 三、优化输出质量-压缩文件体积 3.1 区分环境--减小生产环境代码体积 3.2 压缩代码-JS、ES、CSS 3.3 使用Tree Shaking剔除JS死代码 四、优化输出质量--加速网络请求 4.1 使用CDN加速静态资源加载 4.2 多页面应用提取页面间公共代码,以利用缓存 4.3 分割代码以按需加载 五、优化输出质量--提升代码运行时的效率 5.1 使用Prepack提前求值 5.2 使用Scope Hoisting 六、使用输出分析工具 七、其他Tips webpack是现在主流的功能强大的模块化打包工具,在使用Webpack时,如果不注意性能优化,有非常大的可能会产生性能问题,性能问题主要分为开发时打包构建速度慢、开发调试时的重复性工作、以及输出文件质量不高等,因此性能优化也主要从这些方面来分析。本文主要是根据自己的理解对《深入浅出Webpack》这本书进行总结,涵盖了大部分的优化方法,可以作为Webpack性能优化时的参考和检查清单。基于Webpack3.4版本

ogr读写性能优化

≯℡__Kan透↙ 提交于 2019-12-02 11:14:37
ogr读写性能优化 在开发一个程序的时候,需要将一份mif格式的地理数据按照图幅进行切分,以便使用多进程并行的方式进行后续计算。在第一次实现该功能时,使用的是先将所有数据读取进内存,再将内存里的数据写入到文件中实现的。但是因为mif文件太大,直接读取进内存,在一些内存不足的机器上无法顺利运行,因此对该方法进行了改进。 封装的通用mif文件读写函数 def get_miffile_layer ( ds_file ) : if ds_file is None : return None return ds_file . GetLayerByIndex ( 0 ) def read_mif ( file_path ) : try : mif_file = ogr . Open ( file_path ) lyr_file = mif_file . GetLayerByIndex ( 0 ) except : print "open file failure: %s" % file_path traceback . print_exc ( ) return None return mif_file def create_miffile ( file_path , fieldDef_list ) : ds_file = None ; ds_driver = None ; lyr_file =

MySQL 性能优化总结

本小妞迷上赌 提交于 2019-12-02 10:53:54
一、影响mysql的性能因素 io: 磁盘IO、随机IO、网络IO 扫描行数 内存、临时表、key cache、query cache cpu:排序、分组查询、distinct查询 事务导致的表锁等 一条慢sql查询消耗的性能 > 1000条快查询消耗的性能。性能优化归根结底就是查询语句的优化,如何写出高效的查询语句呢? 对mysql的索引结构要有一定深度的了解,才能更好的写出高效的查询语句。 二、b+ tree结构索引的特点 b+tree 适应于全键值、键值范围或左前缀匹配查找 支持order by排序 b+ tree 索引不支持跳过索引中的列查找 三、hash结构索引特点 hash索引是基于hash表实现。 全值匹配、只有全键值精确匹配才可以查到,也就是说只有等值比较,如:=、in 不支持范围、部分匹配查找 不支持排序 当hash冲突较多的话,索引维护代价较高,查询性能也会受到影响。 四、聚簇索引的select,没有union和子查询 MySQL innodb存储引擎是基于聚簇索引构建而来,一般是基于主键id构建的b+tree索引和数据行而来, 如果表不存在主键,那么mysql会自动选择其他的非空的索引字段;如果非空索引字段不存在,而mysql内部会自动生成内部的唯一标识作为主键构建聚簇索引。 插入速度严重依赖于插入顺序。当主键不是数值自增长类型,而是varchar类型

MySQL 性能优化之骨灰级,高阶神技

我的梦境 提交于 2019-12-02 06:12:11
作者 | 惨绿少年 链接 | https://clsn.io/clsn/lx287.html 一、前言 MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。 今天给大家讲解MySQL的优化实战,助你高薪之路顺畅! 图片描述(最多50字) 二、优化的哲学 注意:优化有风险,涉足需谨慎! 1、优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。 优化手段本来就有很大的风险,只不过你没能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来一个问题的风险! 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果。 保持现状或出现更差的情况都是失败! 2、优化的需求 稳定性和业务可持续性,通常比性能更重要! 优化不可避免涉及到变更,变更就有风险! 优化使性能变好,维持和变差是等概率事件! 切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化! 所以优化工作,是由业务需要驱使的!!! 3、优化由谁参与 在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员

java代码性能优化总结

a 夏天 提交于 2019-12-02 05:45:45
1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。 3、尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。 4、及时关闭流 Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。 5

百度小程序性能优化

喜欢而已 提交于 2019-12-02 02:48:21
引子 : 一个指标引发的血案 https://www.cnblogs.com/Sherlock09/p/11726885.html 性能优化 进入移动互联网时代,传统Web开发技术(HTML,CSS,JavaScript)风光不再,客户端技术(iOS以及Android)依靠良好的体验重新崛起。但是客户端技术的开发效率始终无法与Web技术抗衡,同时会受到诸多平台层面的限制。在这一大背景下,小程序独特的架构诞生了,它将Web前端技术与传统的客户端技术结合在一起,其目的是在开发效率上超过传统的客户端技术,在使用体验上超越传统的Web前端技术。由于小程序的架构区别于传统的Web前端技术,开发者在开发过程可能会遇到一些性能上的问题。本文旨在介绍百度小程序一些实现原理和优化手段,帮助开发者优化自己的小程序。 一 小程序运行时简介 在传统的Web前端项目中,所有代码全部运行在浏览器中。而小程序提供的运行环境有两种,分为逻辑层和视图层。假设现在开发者的小程序项目中有两个页面 pages/index和pages/home ,那么逻辑层代码指的是 app.js 与 pages/index/index.js 还有 pages/home/home.js ,视图层代码指的是 pages/index/index.swan 和 pages/home/home.swan

前端性能优化一:合并css\\javascript

女生的网名这么多〃 提交于 2019-12-01 22:49:56
静态资源打包,因为浏览器下载静态文件的时候是有线程数限制的:同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。为了提高性能,服务器端会把js/css合并成一个文件,再向客户端输出,这样页面能更快的展现,用户等待的时间就会减少,你留住用户的机会将会大大增加。 原html代码: <script type="text/javascript" src="http://yui.yahooapis.com/2.5.2/build/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.5.2/build/container/container_core-min.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.5.2/build/menu/menu-min.js"></script> <script type="text/javascript" src="http://yui.yahooapis.com/2.5.2/build/element/element-beta-min.js"></script>

MySql性能优化知识整理

人走茶凉 提交于 2019-12-01 21:30:44
一、数据类型 慷慨是不明智的,举例varchar(5)和varchar(200)存储‘Word’的空间是一样的,那为什么又说慷慨是不明智的呢? 实验证明更长的列会消耗更多的内存,因为mysql通常会分配固定大小的内存块来保存内部值。尤其是使用内存临时表进行排序或操作时会特别槽糕。 所以最好的策略是只分配真正需要的空间。所以什么数据选择怎样的数据类型也是很重要的。对于钱,提一句,使用int或者bigint进行存储就够了。 二、查询优化 1.切分查询 有时候对于一个大查询我们需要“分而治之”,将大查询切分成小查询,每个查询功能完全一样,值完成一小部分,每次只返回一下部分结果。删除旧的数据就是一个很好的列子。定期地清除大量数据时,如果用一个大的语句一次性完成的话,则可能需要一次锁住很多数据,占满整个事务日志,耗尽系统资源,阻塞很多小的但重要的查询。将一个大的delete语句切分多个较小的查询可以尽可能小地影响mysql性能,同时还可以减少mysql复制的延迟。例如:我们需要每个月运行一次下面的查询: delete from message where create < date_sub(NOW(),INTERVAL 3 MONTH) 那么可以用类似下面的方法来完成: rows_affected = 0 do { rows_affected = do_query( "delete from

计算机性能优化笔记

僤鯓⒐⒋嵵緔 提交于 2019-12-01 19:16:28
参考: 1.计算机性能 计算机组成原理|浅谈计算机性能 2.优化计算机性能 深入理解计算机系统之--------优化程序性能篇 《深入理解计算机系统 第3版》学习笔记——第5章 优化程序性能(程序优化方法总结) 深入理解计算机系统:第5-6章 如何编写高效的程序呢?第一:我们必须选择一组合适的算法和数据结构,第二:我们必须编写出编译器能够有效优化以转换成高效可执行的源代码。第三点,针对处理运算量特别大的计算,将一个任务分成多个部分执行这些可以在多核和多处理器的某种组合上并行计算. 一些低级的优化:1, 消除循环的低效率,代码移动(code motion)2,减少过程调用 3.消除不必要的内存引用 4.循环展开5.提高并行性 3.numba 计算python Numba:高性能Python编译器 numba官方文档 4. 适用于深度学习的数据预处理并行算法实现及性能优化 基于深度学习的计算优化技术研究 5. ... 来源: https://www.cnblogs.com/cekong/p/11713950.html

Linux性能优化实战

送分小仙女□ 提交于 2019-12-01 19:12:42
你是否也曾跟我一样,看了很多书、学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的“拦路虎”。在我看来,大多数人对性能问题“投降”,原因可能只有两个。 一个是你没找到有效的方法学原理,一听到“系统”、“底层”这些词就发怵,觉得东西太难自己一定学不会,自然也就无法深入学下去,从而不能建立起性能的全局观。 再一个就是你看到性能问题的根源太复杂,既不懂怎么去分析,也不能抽丝剥茧找到瓶颈。 你可能会想,反正程序出了问题,上网查就是了,用别人的方法,囫囵吞枣地多试几次,有可能就解决了。于是,你懒得深究这些方法为啥有效,更不知道为什么,很多方法在别人的环境有效,到你这儿就不行了。 所以,相同的错误重复在犯,相同的状况也是重复出现。 其实,性能问题并没有你想像得那么难, 只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观, 大多数性能问题的优化就会水到渠成。 我见过很多工程师,在分析应用程序所使用的第三方组件的性能时,并不熟悉这些组件所用的编程语言,却依然可以分析出线上问题的根源,并能通过一些方法进行优化,比如修改应用程序对它们的调用逻辑,或者调整组件的配置选项等。