性能优化

python性能优化

╄→尐↘猪︶ㄣ 提交于 2020-12-19 06:10:29
Python可能最容易扼杀你的想法,但不是最好的代码实现。尽管强烈反对过早优化,但在 Python 代码中一点点的优化都可能带来巨大的性能提升。 解释仅仅是目的,最正确的方式是天天使用 Python 编程,并且与性能影响相关。 %timeit (per line) 和 %prun (cProfile) 在 ipython 的交互式 Shell 中。 当你的代码在工作时,分析你的代码,并且尝试找出性能瓶颈在哪里。这不与过早的优化是万恶之源这个事实相反。这意味着一级优化,而不是进入冗长的优化序列。 更多的分析你的 Python 代码,你需要阅读这个 python-performance-analysis , 另外一个有趣的包, line_profiler 是一行一行的分析代码 降低方法调用次数,如果你有一个列表需要操作,传递整个列表,而不是遍历整个列表并且传递每个元素给函数并返回。 使用 xrange 代替 range。(在 Python2.x 中这样做,因为 Python 3.x 中是默认的) xrange 是 range 的 C 实现,着眼于有效的内存使用。 对于大数据,使用 numpy,它比标准的数据结构好很多。 "".join(string) 比 + or += 好 while 1 比 while True 快 list comphrension > for loop >

iOS 使用Instruments优化内存性能

十年热恋 提交于 2020-05-07 22:00:15
iOS 使用Instruments优化内存性能 问题 项目中使用到图片合成视频,发现内存增长十分的迅速,导致一些因为内存引起的问题,本文使用这个案例,结合Instruments工具检测和分析问题,最终解决内存问题。 本文的Demo代码 ScreenRecorderTest2 Instruments检测 查看某个范围内的内存增长 打开Instruments选择Allocations工具,点击录制按钮进行录制 使用鼠标框选出内存增长的区域,图中两条黑线中的高亮区域  上面图表区域是内存的可视化视图 下面的面板区域显示的是具体的统计数据 可以看到整体的内存增长为16.81M (All Heap Allocations 堆内存的分配) 堆内存分配的详细统计数据 点击All Heap Allocations旁边的小箭头按钮可以看堆内存分配的详细统计数据:  Address:数据的内存地址 Timestamp:数据创建的时间 Size:数据的大小 Responsible Library:数据创建的相关的库 Responsible Caller:数据创建的相关的库的函数调用 统计数据表中可以看出AppleJPEG 库调用 applejpeg_decode_create 方法创建了很多的内存的数据 
 右边区域显示的是函数的调用栈信息面板(Stack Trace)

从 TPCH 测试学习性能优化技巧之 Q12

廉价感情. 提交于 2020-04-07 19:15:33
一、 查询要求 Q12语句查询获得货运模式和订单优先级。可以帮助决策:选择便宜的货运模式是否会导致消费者更多的在合同日期之后收到货物,而对紧急优先命令产生负面影响。 Q12语句的特点是:带有分组、排序、聚集操作并存的两表连接查询操作。 二、 Oracle执行 Oracle编写的查询SQL语句如下: select /*+ parallel(n) */ l_shipmode, sum(case when o_orderpriority = '1-URGENT' or o_orderpriority = '2-HIGH' then 1 else 0 end) as high_line_count, sum(case when o_orderpriority <> '1-URGENT' and o_orderpriority <> '2-HIGH' then 1 else 0 end) as low_line_count from orders, lineitem where o_orderkey = l_orderkey and l_shipmode in ('TRUCK', 'MAIL') and l_commitdate < l_receiptdate and l_shipdate < l_commitdate and l_receiptdate >= date '1995-01

前端常用性能优化的方法

自作多情 提交于 2020-04-07 17:11:29
1、路由懒加载 ( https://my.oschina.net/bing309/blog/3132685 ) 减少静态资源体积,减少首屏渲染时间 2、使用gzip打包( https://my.oschina.net/bing309/blog/3223237 ) 将项目打包成.gz包 减少静态资源体积 3、使用图片懒加载 图片加载是异步的,需要使用提交较小的占位图片 等待图片加载完成 4、功能模块化 抽离公共代码 提高复用率 较少代码体积和提升可维护性 5、合理使用浏览器缓存( https://my.oschina.net/bing309/blog/3223266 ) 6、减少http请求 7、将外链的js文件 放在dom最底部 8、 将 CSS放在 HEAD中 9、vue中 如果有相同的数据 使用vuex共享数据 可减少请求 10、减少不必要的dom操作(可能会引起 浏览器的 Reflow和Repaint ) 11、配置webpack 将小图片打包成base64格式 不断学习 不断补充 来源: oschina 链接: https://my.oschina.net/bing309/blog/3223271

数据仓库中的 SQL 性能优化(MySQL篇)

淺唱寂寞╮ 提交于 2020-04-06 22:04:47
做数据仓库的头两年,使用高配置单机 + MySQL的方式来实现所有的计算(包括数据的ETL,以及报表计算。没有OLAP)。用过MySQL自带的MYISAM和列存储引擎Infobright。这篇文章总结了自己和团队在那段时间碰到的一些常见性能问题和解决方案。 P.S.如果没有特别指出,下面说的mysql都是指用MYISAM做存储引擎。 1. 利用已有数据避免重复计算 业务需求中往往有计算一周/一个月的某某数据,比如计算最近一周某个特定页面的PV/UV。这里出现的问题就是实现的时候直接取整周的日志数据,然后进行计算。这样其实就出现了重复计算,某一天的数据在不同的日子里被重复计算了7次。 解决办法非常之简单,就是把计算进行切分,如果是算PV,做法就是每天算好当天的PV,那么一周的PV就把算好的7天的PV相加。如果是算UV,那么每天从日志数据取出相应的访客数据,把最近七天的访客数据单独保存在一个表里面,计算周UV的时候直接用这个表做计算,而不需要从原始日志数据中抓上一大把数据来算了。 这是一个非常简单的问题,甚至不需要多少SQL的知识,但是在开发过程中往往被视而不见。这就是只实现业务而忽略性能的表现。从小规模数据仓库做起的工程师,如果缺乏这方面的意识和做事规范,就容易出现这种问题,等到数据仓库的数据量变得比较大的时候,才会发现。需求决定能力。 2 . case when 关键字的使用方法

性能优化的 ULBOX(收集-)

Deadly 提交于 2020-04-06 18:25:48
1. Yahoo性能优化 http://developer.yahoo.com/performance/rules.html 1、尽量减少HTTP请求个数——须权衡 合并图片(如css sprites,内置图片使用数据)、合并CSS、JS,这一点很重要,但是要考虑合并后的文件体积。 2、使用CDN(内容分发网络) 这里可以关注CDN的三类实现:镜像、高速缓存、专线,以及智能路由器和负载均衡; 3、为文件头指定Expires或Cache-Control,使内容具有缓存性。 区分静态内容和动态内容,避免以后页面访问中不必要的HTTP请求。 4、避免空的src和href 留意具有这两个属性的标签如link,script,img,iframe等; 5、使用gzip压缩内容 Gzip压缩所有可能的文件类型以来减少文件体积 6、把CSS放到顶部 实现页面有秩序地加载,这对于拥有较多内容的页面和网速较慢的用户来说更为重要,同时,HTML规范清楚指出样式表要放包含在页面的<head />区域内; 7、把JS放到底部 HTTP/1.1 规范建议,浏览器每个主机名的并行下载内容不超过两个,而问题在于脚本阻止了页面的平行下载,即便是主机名不相同 8、避免使用CSS表达式 页面显示和缩放,滚动、乃至移动鼠标时,CSS表达式的计算频率是我们要关注的。可以考虑一次性的表达式或者使用事件句柄来代替CSS表达式。

Java 代码性能优化

試著忘記壹切 提交于 2020-04-06 14:04:23
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。 代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是 减小代码的体积 提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替

HTML5性能优化

丶灬走出姿态 提交于 2020-04-06 05:19:51
HTML5性能优化 在看完这两章内容之后,我意犹未尽,于是乎从网上搜索关键字“Java Web高性能”,在IBM社区找到两篇不错的文章,而让人更意外的是我发现那两篇文章的内容跟《高性能HTML5》前两章高度相似,不知道是谁抄袭谁的,大家可以鉴别下真伪,下面附上地址。 http://dl2.iteye.com/upload/attachment/0097/9373/b0e69540-e703-3530-81bb-c93de7b850a6.pdf http://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf1/ http://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf2/ 前面是读后感,下面是我针对最近几天学习到的提高Web性能进行了篇幅不小的总结,一来为新人提供帮助,二来自己做一下笔记,加深记忆。 性能之前端篇 --减少重绘 在HTML页面完成展现之后,动态改变页面元素或调整CSS样式都会引起浏览器重绘,性能的损耗直接取决于动态改变的范围:如果只是改变一个元素的颜色之类的信息则只会重绘该元素;而如果是增删节点或调整节点位置则会引起其兄弟节点也一并重绘。 减少重绘并不是说不要重绘,而是要注意重绘范围:①改动的DOM元素越深则影响越小,所以尽量深入节点改动

Hive性能优化——配置角度

爱⌒轻易说出口 提交于 2020-04-06 02:20:48
我们可以从Hive的配置解读去优化。Hive系统内部已针对不同的查询预设定了优化方法,用户可以通过调整配置进行控制, 以下举例介绍部分优化的策略以及优化控制选项。 列裁剪 Hive在读取数据时,可以只读取查询所需要的列,而忽略其他的列。列如,若有以下查询:SELECT a,b FROM q WHERE e<10;在实施此查询时,q表有5列(a,b,c,d,e),Hive只读取查询逻辑中真实需要的3列a、b、e,而忽略c,d;这样做节省了读取开销,中间表存储开销和数据整合开销。裁剪所对应的参数项为: hive.optimize.cp=true (默认值为真) 分区裁剪 可以在查询过程中减少不必要的分区。列如,若有以下查询: SELECT FROM(SELECT a1,COUNT(1) FROM T GROUP BY a1) subq WHERE subq.prtn = 100 ;#(多余分区) SELECT FROM T1 JOIN (SELECT * FROM T2) subq ON (T1.a1=subq.a2) WHERE subq.prtn = 100 ;查询语句若将"subq.prtn=100"条件放入子查询中更为高效,可以减少读入的分区数目。Hive自动执行这种裁剪优化。分区参数为: hive.optimize.pruner=true (默认值为真)。 JOIN操作

从 TPCH 测试学习性能优化技巧之 Q2

偶尔善良 提交于 2020-04-05 19:59:13
一、 查询要求 Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应商能以最低的价格供应它,就可以选择哪个供应商来订货。 Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,TPC-H标准规定,查询结果只返回前100行即可(通常依赖于应用程序实现)。 二、 Oracle执行 Oracle编写的查询SQL语句如下: select * from ( select /*+ parallel(n) */ s_acctbal,s_name,n_name,p_partkey,p_mfgr,s_address,s_phone,s_comment from part,supplier,partsupp,nation,region where p_partkey = ps_partkey and s_suppkey = ps_suppkey and p_size = 25 and p_type like '%COPPER' and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = 'ASIA' and ps_supplycost = ( select min(ps_supplycost) from partsupp