zoukankan      html  css  js  c++  java
  • Python测试函数运行时间

    import time
    import datetime
    # 测试函数运行时间
    def cal_time(fn):
        """计算性能的修饰器"""
        def wrapper(*args,**kwargs):
            starTime = time.time()
            f = fn(*args,**kwargs)
            endTime = time.time()
            print('%s() runtime:%s ms' % (fn.__name__, 1000*(endTime - starTime)))
            return f
        return wrapper
    @cal_time
    def test():
        print("开始计算程序运行时间-----------")
        for i in range(1000000):
            i = i +1
    if __name__ == "__main__":
        test()
    

      调用此方法

    from cal_time import cal_time
    '''
    查找:在一些数据元素中,通过一定的方法找出与关键字相同元素的过程,
    
        列表查找:从列表中查找指定元素
            输入:列表、待查找元素
            输出:元素下标(未找到元素时一般返回None或-1)
        内置列表查找函数:index()
    '''
    # 顺序查找: 线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表的最后一个元素
    # 时间复杂度 O(n)  n---列表的长度  循环过程中无减半
    @cal_time
    def linear_search(li,val): # li 列表    val 待查找元素
        for ind,v in enumerate(li):
            if v == val:
                return ind
        else:
            return None
    # 二分查找 : 折半查找,从有序列表中的初始候选区li[O:n]开始,通过对待查找的值与候选区中间的值的比较,
    #             可以使候选区少一半
    #  li[1,2,3,4,5,6,7,8,9]
    
    @cal_time
    def binary_search(li,val):
        left = 0
        right = len(li) - 1
        while  left <= right:# 筛选候选区值
            mid = (left + right) // 2
            if li[mid] == val:
                return mid
            elif li[mid] > val:#待查找值在mid的左侧
                right = mid - 1
            else:# li[mid] 值小于val 意味着带查找的值在mid右侧
                left = mid + 1
        else:
            return None        
    
    
    #li = [1,2,3,4,5,6,7,8,9]
    li = list(range(100000000))
    linear_search(li,3888)
    binary_search(li,3888)
                 
                
    

      

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/c-jw/p/12574426.html
Copyright © 2011-2022 走看看