zoukankan      html  css  js  c++  java
  • py计算程序运行时间-简易版

    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_time2 import calculate_function_run_time_ms
    from cal_time2 import calculate_function_run_time
    from cal_time import cal_time
    '''
    查找:在一些数据元素中,通过一定的方法找出与关键字相同元素的过程,
    
        列表查找:从列表中查找指定元素
            输入:列表、待查找元素
            输出:元素下标(未找到元素时一般返回None或-1)
        内置列表查找函数:index()
    '''
    # 顺序查找: 线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表的最后一个元素
    # 时间复杂度 O(n)  n---列表的长度  循环过程中无减半
    #@calculate_function_run_time
    @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]
    #@calculate_function_run_time_ms
    @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)
  • 相关阅读:
    反射机制小结
    IO流小节
    C# 利用file打印日志
    JS判断表单内容是否更改过
    input file 样式以及获取选择文件方法集合
    JS判断终端浏览器类型
    Node.js服务的重启与监控
    ASP.NET MVC 与Form表单交互
    JS 更改表单的提交时间和Input file的样式
    My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution
  • 原文地址:https://www.cnblogs.com/c-jw/p/13806708.html
Copyright © 2011-2022 走看看