首页 > 其他分享 >函数性能统计

函数性能统计

时间:2023-10-19 10:45:10浏览次数:35  
标签:obj 函数 性能 sorted print lpf line td 统计

函数性能统计

https://superfastpython.com/benchmark-python-code/#Benchmark_with_cProfile

第五章 详细阅读,能够列出每个函数的时间,以及函数中调用的函数的性能

 

profile 模块使用参考

Python性能分析工具Profile - -零 - 博客园 (cnblogs.com)

函数支持保存日志参数

cProfile模块 使用方法

1)支持某一处函数统计

Python 程序测试 profile and Cprofile-CSDN博客

 

一 性能(时间)分析

  参考文档:【调优工具】python性能分析工具cProfiler_python cprofiler 用法-CSDN博客,主要使用cprofiler例子

 

二更多性能分析工具

    line_profiler

      保存性能报告 # lpf.dump_stats('save_name.lprof')

      读取报告        # python -m line_profiler save_name.lprof

  如何对line_profiler排序? 由官网学习:line-profiler · PyPI

  

  版本1-基于line_profiler 分析每行代码时间-排序

   排序代码

def get_sorted_lpf(obj, k_tuple, topk):
    """
    obj 为保存的标准打印 字典对象,里面保存了hits times line
    k_tuple,obj字典用元组作为键
    topk,排序后选出topk
    """
    col = []
    tab = obj.__dict__['timings'][k_tuple]
    # [(14, 1, 1788), (15, 1, 60235833), (16, 1, 2224), (17, 1, 40), (18, 1, 2537)]
    for i in tab:
        td = {}
        td["line"] = i[0]
        td["hits"] = i[1]
        td["times"] = i[2]/10000000
        col.append(td)
    print(col)
    from operator import itemgetter
    # 按照键对字典进行排序
    sorted_data = sorted(col, key=itemgetter('times'),reverse=True)

    # 输出排序后的结果
    for item in sorted_data[:topk]:
        print(item)
    return sorted_data

  完整实例代码

import re
import time
from line_profiler import LineProfiler
def _swait():
    time.sleep(2)
    print("---swait---")

def get_str(obj, n):
    for i in range(n):
        _swait()
        re.search("-j-", obj)

def main(n):
    print("1111111111111")
    get_str("out-j0-j-a", n)
    print("2222222222222")
    time.time()
    re.compile("out-j0-j-a")

def get_sorted_lpf(obj, k_tuple, topk):
    """
    obj 为保存的标准打印 字典对象,里面保存了hits times line
    k_tuple,obj字典用元组作为键
    topk,排序后选出topk
    """
    col = []
    tab = obj.__dict__['timings'][k_tuple]
    # [(14, 1, 1788), (15, 1, 60235833), (16, 1, 2224), (17, 1, 40), (18, 1, 2537)]
    for i in tab:
        td = {}
        td["line"] = i[0]
        td["hits"] = i[1]
        td["times"] = i[2]/10000000
        col.append(td)
    print(col)
    from operator import itemgetter
    # 按照键对字典进行排序
    sorted_data = sorted(col, key=itemgetter('times'),reverse=True)

    # 输出排序后的结果
    for item in sorted_data[:topk]:
        print(item)
    return sorted_data


if __name__ == "__main__":
    lpf = LineProfiler()
    lpf.add_function(get_str)
    tfunc = lpf(main)
    tfunc(3)
    lpf.print_stats(sort=True)
    # lpf.print_stats(sort_by_time=True)
    # lpf.print_stats(sortby='cumulative')
    lpf.dump_stats('save_name.lprof')
    # lpf.dump_stats('save_name.prof')

    obj = lpf.get_stats()
    k_tup = ('C:\\Users\\xialiu05\\Documents\\公司任务\\ecosys\\GPT2-large\\chat\\timeparsetool\\lineparsetool.py', 13, 'main')
    get_sorted_lpf(obj, k_tup, 10)
    # import pstats
    # p = pstats.Stats('./save_name.prof')
    # p.strip_dirs().sort_stats('Time').print_stats(10)

  

      

 

标签:obj,函数,性能,sorted,print,lpf,line,td,统计
From: https://www.cnblogs.com/lx63blog/p/17725589.html

相关文章

  • 软件性能测试怎么做,上海权威软件性能检测机构有哪些?
    ​性能测试报告作为衡量软件质量的重要指标之一,软件的性能是一种非功能特性,不关心系统是否可以完成特定的功能,而只关心软件系统在运行时的速度是否足够快、是否消耗足够少的资源。做好软件性能测试十分重要,有哪些方法可以提升软件的性能指标呢?一、软件性能测试有哪些方法?1.压......
  • 22.函数eval和ast.literal_eval
    函数eval和ast.literal_eval目录函数eval和ast.literal_eval将str转list将str转dict将str转tupleeval和字典eval执行str解析eval的安全问题literal_eval()参考资料python中将字符串型的list,tuple,dict转变成原有的类型eval函数在python中做数据类型的转换还是很有用的。它的作......
  • Python入门进阶:68 个 Python 内置函数详解
    内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。截止到python版本3.6.2,python一共提供了68个内置函数,具体如下abs()dict()help()min()setattr()all()dir()hex()next()slice()any()divmod()id()object()sorted()ascii()enumerate()input()......
  • Windows下VC++编译器32位memcpy、memmove函数汇编代码详解
    整理者:赤勇玄心行天道QQ号:280604597微信号:qq280604597QQ群:511046632博客:www.cnblogs.com/gaoyaguo  blog.csdn.net/cyz7758520?type=blog大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的!你可以随意转载,无需注明出处!写文档实属不易,我希望大家能支......
  • m基于Simulink的稳定频差光锁相环系统性能仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要锁相环(Phase-LockedLoop,PLL)是基于相位反馈控制技术来实现频率及相位同步的一种电学结构。按照信号类型区分,可以将锁相环分为两类:电锁相环与光锁相环。锁相环分类所示,电锁相环是目前应用极为广泛的一种电学结......
  • Go 函数多返回值错误处理与error 类型介绍
    Go函数多返回值错误处理与error类型介绍目录Go函数多返回值错误处理与error类型介绍一、error类型与错误值构造1.1Error接口介绍1.2构造错误值的方法1.2.1使用errors包1.2.2自定义错误类型二、error类型的好处2.1第一点:统一了错误类型2.2第二点:错误是值2.3第三点:易......
  • PTA 函数与递归部分题目讲解及思路
    7-1判断素数题目分析题目输入n个数,判断其是否为质数对于判断质数,只需要满足从2开始遍历的每一个数一直到√n均无法被n整除即可关于为什么只要到√n呢?因为n=√n*√n,因此其最大的因数不会超过√n,因此可以优化减少不必要的循环ACCode#include<iostream>#include<c......
  • C语言-常用函数
    C语言-常用函数strcat_s函数功能:strcat_s函数与strcat函数一样,主要用于字符串拼接。依赖:头文件string.h主要语法:errno_tstrcat_s(char*strDestination,size_tnumberOfElements,constchar*strSource);描述:用于对字符串进行拼接,将两个字符串连接再一起参数:strDe......
  • 系统性能评估与方法
    系统配置与性能评价(架构师考试中的16-17题,共2分)计算机系统性能指标分为两大方面:①是可靠性或者可用性,主要指的是计算机正常工作的时间,其指标可以是能够持续工作的时间长度(如平均无故障时间)。②它的处理能力或者效率,这个指标又被分为三种指标,第一类是吞吐率(单位时间内能够处理正常......
  • WPF性能优化:Freezable 对象
    Freezable是WPF中一个特殊的基类,用于创建可以冻结(Freeze)的可变对象。冻结一个对象意味着将其状态设置为只读,从而提高性能并允许在多线程环境中共享对象。Freezable的应用我们定义画刷资源的时候常常会这样写:<SolidColorBrushx:Key="RedBrush"Color="Red"o:Freeze="True"/>......