메서드에 개체를 전달하는 두 가지 방법으로 벤치 마크를 실행했는데 암시 적 개체 통과는 명시 적 메서드보다 시간이 적게 걸렸습니다. 제 책은 이것들이 똑같은 과정이라고 말합니다. 차이점은 무엇입니까? 내가 다음 코드 두 세트의 첫 번째 반환 317 루프 당 ns의 두 번째 반환 루프 당 400 NS 각각 'timeit'를 실행하면, 그래서암시 적 대 명시 적 개체 메서드 메모리 벤치 마크 차이
class Point:
def reset(self)
self.x = 0
self.y = 0
:
먼저, 여기에 클래스 정의의 . 여기
p = Point()
p.reset()
을 그리고 명시 적으로 다른 것 : 여기 파이썬은 뒤에서 방법에 개체를 전달하는 내장 객체 메소드 통과 코드의
p = Point()
Point.reset(p)
누군가에 무슨 일이 일어나고 있는지 말해 줄 수 벤치 마크 차이를 설명하는 메모리 할당 수준? 한 가지 방법이 다른 것보다 더 '파이썬 적'인가? 왜 프로그래머는 다른 것보다 (속도 이상으로) 하나를 선택할 것입니까? reset
대신 클래스 Point
의 classmethod가되는 객체 p
하는 방법이기 때문에
마이클
나노초 의미입니까? 그렇다면 설명하는 차이가 너무 작아 실제적으로 거의 의미가 없으며 표시되는 코드 이외의 요소 (예 : 실행중인 다른 프로세스, 사용중인 메모리 등)가 원인 일 수 있습니다. 당신은 안정적으로 두 번째 것이 항상 느린 것을 확립 했습니까? – BrenBarn
예, 테스트를 각각 25 회 실행하고 결과의 평균을 보았습니다. 나는 나노초를 의미한다. –
@delnan, 나는 timeit을 사용했다. 바로 여기에 명확하게 명시되어 있습니다. "그래서, 다음 두 세트의 코드 각각에 ** timeit ** **을 실행하면 처음에는 루프 당 317 ns가 반환되고 두 번째 코드는 루프 당 400 ns를 반환합니다." 코멘트 주셔서 감사합니다. –