计算给定函数python的运行时间

查理斯·贾亚瓦达纳(Charith Jayawardana)

我创建了一个函数,该函数接受另一个函数作为参数并计算该特定函数的运行时间。但是当我运行它时,我似乎无法理解为什么它不起作用。有谁知道为什么吗?

import time
import random
import timeit
import functools

def ListGenerator(rangeStart,rangeEnd,lenth):
 sampleList = random.sample(range(rangeStart,rangeEnd),lenth)
 return sampleList


def timeit(func):
    @functools.wraps(func)
    def newfunc(*args):
        startTime = time.time()
        func(*args)
        elapsedTime = time.time() - startTime
        print('function [{}] finished in {} ms'.format(
            func.__name__, int(elapsedTime * 1000)))
    return newfunc

@timeit
def bubbleSort(NumList):
    compCount,copyCount= 0,0

    for currentRange in range(len(NumList)-1,0,-1):
        for i in range(currentRange):
            compCount += 1
            if NumList[i] > NumList[i+1]:
                temp = NumList[i]
                NumList[i] = NumList[i+1]
                NumList[i+1] = temp
   # print("Number of comparisons:",compCount)



NumList = ListGenerator(1,200,10)
print("Before running through soriting algorithm\n",NumList)
print("\nAfter running through soriting algorithm")
bubbleSort(NumList)
print(NumList,"\n")
for i in range (0, 10, ++1):
 print("\n>Test run:",i+1)
 bubbleSort(NumList)
 compCount = ((len(NumList))*((len(NumList))-1))/2
 print("Number of comparisons:",compCount)

运行时屏幕截图 在此处输入图片说明

PyNoob

看起来代码执行得非常快。在中bubbleSort,我添加了一个额外的for循环来再次执行比较10000

@timeit
def bubbleSort(NumList):
    compCount,copyCount= 0,0

    for i in range(10000):
        for currentRange in range(len(NumList)-1,0,-1):
            for i in range(currentRange):
                compCount += 1
                if NumList[i] > NumList[i+1]:
                    temp = NumList[i]
                    NumList[i] = NumList[i+1]
                    NumList[i+1] = temp

现在的结果是:

 ('Before running through soriting algorithm\n', [30, 18, 144, 28, 155, 183, 50, 101, 156, 26])

After running through soriting algorithm
function [bubbleSort] finished in 12 ms
([18, 26, 28, 30, 50, 101, 144, 155, 156, 183], '\n')
('\n>Test run:', 1)
function [bubbleSort] finished in 12 ms
('Number of comparisons:', 45)
('\n>Test run:', 2)
function [bubbleSort] finished in 8 ms
('Number of comparisons:', 45)
('\n>Test run:', 3)

等等... @vishes_shell也在注释中指出了这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算函数的运行时间

来自分类Dev

从Python中的日期/时间计算正常运行时间

来自分类Dev

给定实际运行时间时,如何计算运行时间复杂度(`“ O(m)”`)?

来自分类Dev

Python计算的运行时间结果不正确

来自分类Dev

这些Python函数没有预期的运行时间

来自分类Dev

运行时间计算示例

来自分类Dev

正常运行时间如何计算?

来自分类Dev

如何计算脚本运行时间

来自分类Dev

如何确定给定递归函数的运行时间 T(n)?

来自分类Dev

循环函数的运行时间

来自分类Dev

如何计算此递归函数的最坏情况(理论上)运行时间?

来自分类Dev

计算服务的正常运行时间/停机时间

来自分类Dev

算法的实验运行时间与理论运行时间函数的比较

来自分类Dev

如何计算图灵机的运行时间?

来自分类Dev

尝试计算算法的运行时间

来自分类Dev

如何计算多线程程序的运行时间?

来自分类Dev

估计算法运行时间的增长顺序

来自分类Dev

什么是计算线程运行时间的正确方法?

来自分类Dev

计算和处理php脚本进程的运行时间

来自分类Dev

计算实时时间的运行时差异

来自分类Dev

Pingdom 正常运行时间计算公式

来自分类Dev

C语言如何计算运行时间

来自分类Dev

Python的低层性能与高层性能(回文函数的运行时间分析)

来自分类Dev

在Knockout计算函数运行时显示loading div

来自分类Dev

递归函数的Big-O运行时间

来自分类Dev

试图弄清楚我的函数的运行时间

来自分类Dev

递归函数的Big-O运行时间

来自分类Dev

如果运行时间太长,则中止函数执行

来自分类Dev

脚本中的函数运行时的时间戳