为什么python索引函数的执行时间比我自己的线性搜索函数快?

时间:2017-02-15 23:44:02

标签: python

我正在做一个实验,比较索引函数的执行时间和我自己的线性搜索函数。根据我的理解,Python为索引函数实现了一个线性搜索算法,所以执行时间应该大致相同,不是吗?

我自己的搜索功能如下所示

def linearSearch (x,numList,length):      
    n = 0
    for i in range(length):
            n = n + 1
            if numList[i] == x:
                    return i, n
    return -1, n

3 个答案:

答案 0 :(得分:5)

理解这一点非常重要... O(N)告诉您 nothing 关于操作完成的速度。仅仅因为您的实现和python& #39;的实施都是O(N),这并不代表他们都会花费相同的时间。

O(N)告诉您的是,如果一个实现需要1个来处理100个项目,那么它可能需要大约2个来处理200个项目。换句话说,O(N)会告诉您在算法中花费的时间将随着输入大小的变化而 scale

在这种情况下,python的搜索将始终优于您的搜索,因为python的搜索在C(假设CPython)中运行,而解释器的开销很小 - 而您的实现具有在" python-space"中进行大量查找(相比之下,这是非常昂贵的。)

一些具有良好JIT(例如pypy)的python实现将能够减少这种差异,但我怀疑你是否能够击败优化的内置函数的性能。

答案 1 :(得分:4)

Python的list.index函数以C速度运行,我不知道你的Python变体如何能够胜过它。

这当然假设您的Python安装使用CPython。

答案 2 :(得分:1)

Python是用C语言编写的,恰好比python快5倍左右。这意味着用Python编写的代码比用C语言编写的index()方法慢大约5倍。