ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python测试函数运行时间

2020-03-26 14:56:57  阅读:268  来源: 互联网

标签:cal val Python 测试函数 li 查找 time 列表 运行


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)
             
            

  

标签:cal,val,Python,测试函数,li,查找,time,列表,运行
来源: https://www.cnblogs.com/c-jw/p/12574426.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有