2010-02-25 3 views
0

예를 들어, Cocoa Framework에서 대부분의 touch 메소드는 구현하지 않는 한 아무 작업도 수행하지 않습니다. 내 모든 프로그램에서 비슷한 방법으로 내 사용자 지정 구현 전에 [슈퍼 메서드 :]라고 부르는 경우 현실적인 속도 저하 (1/100 초)가 발생할 수 있습니까?ObjC : 아무것도하지 않는 수퍼 메서드에 대한 호출이 많으면 속도가 느려질 수 있습니까?

어쩌면 어리석은 질문 일 수도 있습니다.하지만 메시지 비용에 대한 구체적인 내용을 알지 못하기 때문에 묻습니다.

+0

죄송합니다. 중복 : http://stackoverflow.com/questions/907843/cost-of-message-dispatch-in-objective-c –

+0

@Johannes : 나는 부분적으로 동의하지 않습니다. '[super method :]'호출은'[ordinary_object method :]'와는 다른 경로를 취합니다. – kennytm

+0

정말 중요하지 않습니까? –

답변

2

짧은 대답 : 아니오.

답변 : Obj-C 런타임에서 메시지가 매우 빠릅니다. 컴파일러는 호출을 최적화하고 런타임은 디스패치를 ​​최적화합니다. 그래픽 지오메트리를 구축하기 위해 수백만 프레임의 긴밀한 루프에서 메시지를 호출하는 경우 그 영향을 고려해 볼 수 있습니다. 그렇지 않은 경우 사용자 입력을 초청하는 것과 같은 의미 인 은 특히입니다.이 정의는 시스템의 다른 부기보다 덜 자주 발생합니다.

관심있는 운동 : 상어와 함께 앱을 프로필하고 킥을 확인해보십시오. 메시지 발송자의 이름은 objc_msgSend입니다.

관련 문제