paip.性能跟踪profile原理与架构与本质-- python扫带java php

##背景

弄个个输入法音标转换atiEnPH工具,老是python性能不的上K,7k记录浏览过k要30分钟了.

##目标

分析一个程序的性能,最终都归结为回答4个基本的问题:

程序运行速度有多快?

运行速度瓶颈在哪儿?

程序使用了多少内存?

内存泄露发生在哪里?

谁引用着泄漏的对象?

作者 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

#工具cProfile,objgraph

谁引用着泄漏的对象? 这个可以使用对象引用图来看见..

该命令的输出应该是一副PNG图像,保存在/tmp/backrefs.png,它看起来是像这样:

back refrences

最下面有红字的盒子是我们感兴趣的对象。我们可以看到,它被符号x引用了一次,被列表y引用了三次。如果是x引起了一个内存泄漏,我们可以使用这个方法,通过跟踪它的所有引用,来检查为什么它没有自动的被释放。

回顾一下,objgraph 使我们可以:

显示占据python程序内存的头N个对象

显示一段时间以后哪些对象被删除活增加了

在我们的脚本中显示某个给定对象的所有引用

#测试代码

import cProfile

#直接把分析结果打印到控制台

cProfile.run("mainx()")

#把分析结果保存到文件中,不过内容可读性差...需要调用pstats模块分析结果

#cProfile.run("foo()", "result")

#还可以直接使用命令行进行操作

#>python -m cProfile myscript.py -o result

def convert2atiEnPn(phntc):#17.3s  49tse

"""  [email protected]   >>  [email protected]@[email protected]@[email protected]

"""

r=""

#print ("o412")

#print(map)

#100test logx abt 3s

#logx("  phntc:---"+phntc)

li= SybalbeList(phntc)   #7.6s

#logx("  syblist:---")

#print_li(li)

for sbl in li:

#all saveval invoke time safeVal 5.6s    446tse

#todox gaicheng  jude modul ..only   0.1s

#yuln ...python d excepti jon fei resource l a .

myvowel=safeVal (map, sbl.vowel,  "")

mycnst=safeVal (map,  sbl.csnt , "")

r=r+"@"+mycnst+"-"+myvowel

# phntc=trim(phntc)

return r

#第一的测试

157277 function calls in 20.648 seconds

Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno(function)

1    0.000    0.000   20.648   20.648 <string>:1(<module>)

49    0.006    0.000   17.359    0.354 <string>:15(convert2atiEnPn)

49    0.003    0.000    1.105    0.023 <string>:2(updatexo4)

1    0.003    0.003   20.648   20.648 <string>:37(mainx)

#第二次:

118375 function calls in 9.266 seconds

Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno(function)

1    0.000    0.000    9.265    9.265 <string>:1(<module>)

49    0.002    0.000    6.395    0.131 <string>:15(convert2atiEnPn)

49    0.003    0.000    1.155    0.024 <string>:2(updatexo4)

1    0.004    0.004    9.265    9.265 <string>:39(mainx)

#分析结果:

能看见,python的异常很消耗性能.   使用 if key in map 代替异常,,,性能消耗从5s直到个0.1s

日志也比较消耗性能

#java跟php的profile

java jprofile,.. php xdebug..

参考

关于Python Profilers性能分析器 - btchenguang - 博客园.htm

Python性能分析指南 - 技术翻译 - 开源中国社区.htm

Python--字典-fussfuss1-ChinaUnix博客.htm

paip.性能跟踪profile原理与架构与本质-- python扫带java php,码迷,mamicode.com

时间: 2024-08-05 15:19:44

paip.性能跟踪profile原理与架构与本质-- python扫带java php的相关文章

JProfiler 解决 Java 服务器的性能跟踪

作者:徐建祥([email protected]) 时间: 2006/01/05 来自:http://www.anymobile.org 1.摘要..........................................................................12.改善服务器的性能...........................................................13.分析器原理.........................

Linux服务篇之七:MySQL主从原理及架构配置

Linux服务篇之七:MySQL引擎了解.主从原理及架构配置 一.MySQL引擎了解 MyISAM引擎 默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select, MyISAM比较适合. InnoDB引擎 支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.Innodb最初是由innobase Oy公司开发,200

干货 | 云智慧透视宝Java代码性能监控实现原理

这篇图文并茂,高端大气上档次,思维缜密的文章,一看就和我平时的风格不同.对了.这不是我写的,是我家高大英俊,写一手好代码,炒一手好菜的男神架构师老公的大作,曾发表于技术公号,经本人授权转载,如有技术问题,我代为请他本人解答~~ 一.Java平台体系及应用场景 从1995年Sun Microsystems公司正式推出Java,到2006年时Sun公司将其开源,迄今为止已经有了20年的历史.Java本身已不仅仅只是一门面向对象的编程语言,而是由一系列计算机软件和规范形成的技术体系,这个技术体系提供了

网易视频云:流媒体服务器原理和架构解析

网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能.今天,网易视频云的技术专家给大家分享一篇流媒体技术性文章:流媒体服务器原理和架构解析. 一个完整的多媒体文件是由音频和视频两部分组成的,H264.Xvid等就是视频编码格式,MP3.AAC等就是音频编码格式,字幕文件只是附加文件.目前大部分的播放器产品对于H.264 + AAC的MP4编码格式支持最好,但是MP4也有很多的缺点,比如视频header很大,影响在线视频

Oracle性能优化之性能跟踪工具_超越OCP精通Oracle视频教程培训34

Oracle性能优化之性能跟踪工具_超越OCP精通Oracle视频教程培训34 课程介绍 Oracle视频教程,风哥本套oracle教程培训<<Oracle数据库性能优化培训教程>>的第4/10套:Oracle性能优化之性能跟踪工具.主要学习Oracle性能优化,如何获取跟踪文件,sql_trace及案例,10046事件及案例,trace内容分析,oradebug及案例,dbms_system,dbms_monitor及案例,dbms_support,10053事件及案例,综合案例

paip.关于动画特效原理 html js 框架总结

paip.关于动画特效原理 html js 框架总结 1. 动画框架的来源:flex,jqueryui 3 2. 特效的分类 3 2.1. Property effects 动态改变一个或多个目标对象的属性 (Animate.Fade, Resize, and AnimateColor) 4 2.2. Transform effects 缩入.旋转和位置的改变 .(Move, Rotate, and Scale) 4 2.3. Pixel-shader effects 主要是针对图片象素着色的动

mysql性能调试工具profile

我一直在找mysql中有没有类似Oracle 10046类似的工具,可以看到SQL执行的时间消耗在哪里.终于在网上找到一个profile,使用一些,觉得不错. mysql> select version(); +-----------+ | version() | +-----------+ | 5.6.16    | +-----------+ 1 row in set (0.00 sec) mysql> SELECT @@profiling; +-------------+ | @@pro

MySQL主从复制原理以及架构

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更 新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服 务器在日志中读取的最后一次成功更新的位置.从服务

沉淀再出发:jetty的架构和本质

沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层层包裹提供了非常强大的web功能,但是可以自我定制的余地就非常小了,有的时候我们希望自己设计更多的请求接收,处理和返回的环节,就可以用更加轻量级的jetty了. 二.jetty的架构和原理 2.1.Jetty 的基本架构 Jetty 是一个Servlet 引擎,它的架构比较简单,是一个可扩展性和非常