python timeit测量代码运行时间, 好像不对
PHPz
PHPz 2017-04-18 09:04:07
0
2
346
def is_unique_char(string):
    if len(string) > 256:
        return True

    record = 0L

    for ch in string:
        # print record
        ch_val = ord(ch)

        if (record & (1 << ch_val)) > 0:
            return False

        record |= (1 << ch_val)

    return True


import string
s1 = string.ascii_letters + string.digits


if __name__ == '__main__':
    import timeit
    print is_unique_char(s1)
    print timeit.timeit("is_unique_char(s1)",
            setup="from __main__ import is_unique_char, s1")
            

代码如上, is_unique_char 就是一个包含位运算的函数(具体作用不重要)
运行代码, 秒出print is_unique_char(s1)的结果, 但是timeit测量需要30多秒。 这是为什么呢?会不会是因为位运算? 呃,先感谢大家解答

PHPz
PHPz

学习是最好的投资!

모든 응답(2)
Ty80

간단히 말하면 timeit은 코드를 1000000번 실행합니다... 물론 시간이 오래 걸립니다.

이 함수는 특정 코드의 평균 실행 시간을 측정하는 데 사용되므로 이를 실행 횟수로 나누어야 합니다.

귀하의 코드를 변경하고 time.time:

를 사용하여 테스트했습니다. 으아악 으아악

결과:

으아악

결과적으로 1회 실행은 거의 똑같습니다...


내가 답변한 질문: Python-QA

黄舟

https://docs.python.org/2/library/timeit.html

으아악

주어진 명령문, 설정 코드 및 타이머 함수를 사용하여 Timer 인스턴스를 생성하고 number 실행

으로 timeit() 메서드를 실행합니다.

회 실행
기본값number=1000000
기본값은 1,000,000회 실행이며, 물론 느립니다...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿