美文网首页
2018-07-16 执行时间分析

2018-07-16 执行时间分析

作者: AntFish | 来源:发表于2018-07-16 14:58 被阅读0次

今天刚看到ipython的一个函数执行时间的分析器,非常好用,记录一下。

安装模块

pip install line_profiler

导入模块

%load_ext line_profiler

例子

先定义一个函数:

def sum_of_lists(n):
     total =0
     for i in range(5):
         l = [j ^ (j >> i) for j in range(n)]
         total += sum(l)
     return tatal

使用line_profiler分析函数执行时间

%lprun -f sum_of_lists sum_of_lists(5000)
Timer unit: 2.84444e-07 s

Total time: 0.00461681 s
File: <ipython-input-40-ce32f0c125bd>
Function: sum_of_lists at line 1

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     1                                           def sum_of_lists(n):
     2         1          5.0      5.0      0.0      total =0
     3         6         11.0      1.8      0.1      for i in range(5):
     4         5      15685.0   3137.0     96.6          l = [j ^ (j>>i) for j in range(n) ]
     5         5        529.0    105.8      3.3          total += sum(l)
     6         1          1.0      1.0      0.0      return total

ok,很明显发现绝大部分的时间都发在第4行代码 l = [j ^ (j>>i) for j in range(n) ] 上了。

pycharm中自带了性能分析工具

测试函数如下:


微信图片_20180716151817.png

在run菜单下选择 profile your_file_name

微信图片_20180716152001.png

执行后会生成测试结果。
Statistcs(性能统计)和Call Graph(调用关系图)
Statistcs

  1. 表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。

  2. 点击表头上的小三角可以升序或降序排列表格。

  3. 在Name这一个列中双击某一行可以跳转到对应的代码。

微信图片_20180716152305.png

Call Graph

  1. 右上角的4个按钮表示放大、缩小、真实大小、合适大小;

  2. 箭头表示调用关系,由调用者指向被调用者;

  3. 矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;

  4. 矩形中间显示运行时间和时间百分比;

  5. 矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色


    微信图片_20180716152346.png

相关文章

  • 2018-07-16 执行时间分析

    今天刚看到ipython的一个函数执行时间的分析器,非常好用,记录一下。 安装模块 pip install lin...

  • mysql 查询时间测试

    MySQL 的性能-SQL 执行分析(执行时间分析) 先执行 show variables like 'profi...

  • Time Profiler

    CPU分析工具分析代码的执行时间 1,首先打开instrument,,选择工具为Time Profiler 2,勾...

  • Instruments使用

    Instruments 使用最多的就是 Time Profiler(分析代码执行时间) 和 Leaks(检查内存泄...

  • Instruments — Time Profiler使用

    Time Profiler 简介:时间分析工具,能帮助我们分析代码的执行时间,找出导致程序变慢的原因。 下面就用三...

  • Instrument 中Time Profiler、Alloca

    Instrument Time Profile(分析代码的执行时间,找出导致程序变慢的原因) Separate b...

  • iOS性能监测Instruments的使用

    Time Profiler:分析代码的执行时间,找出导致程序变慢的原因。要从xcode的product>profi...

  • TraceView

    使用代码生成.trace文件,分析代码执行时间通过Debug class 检测代码生成logs保存到.trace文...

  • iOS性能优化-instruments

    Xcode 自带的监控调试工具 instruments 调试和优化的代码 Profiler:分析代码的执行时间,找...

  • 数据结构与算法--时间空间复杂度(基础篇)

    时间复杂度分析 大O复杂度表示法 大O时间复杂度实际上并不具体表示代码真正的执行时间,而是表示算法的执行时间随数据...

网友评论

      本文标题:2018-07-16 执行时间分析

      本文链接:https://www.haomeiwen.com/subject/zqlbpftx.html