2012-12-03 2 views
1

CPU 및 메모리 사용에 관해서는 Objective-C에서 C 스타일 코딩 블록이 얼마나 효율적입니까? Objective-C를위한 bruteforcing 라이브러리를 만들고 있는데 가능한 한 많이 최적화해야합니다. 사용되는 코드 블록은 bruteforcer가 반복 될 때마다 호출됩니다.Bruteforcer에 대한 Objective-C 코드 블록 효율성

+0

"충분히 효율적"이라고 말하고 있습니다. 걱정할 필요가있는 다른 최적화가 많이있을 것입니다. – vcsjones

답변

2

함수 언어와 마찬가지로 블록 (클로저)을 만들려면 힙에 할당해야 할 수도 있습니다 (블록을 ​​복사 할 때 확실히 발생합니다. 내부 프레임에서 블록을 사용하면 컴파일러가 피할 수 있습니다.).

어떤 경우에도 루프 외부에서 발생하는 경우 가격을 한 번 내면됩니다. 블록을 호출하는 것은 C++ 인스턴스 객체에서 가상 메소드를 호출하는 것과 거의 같은 비용을 부담해야합니다. (이것은 거의 동일한 작업이기 때문에

+0

클로저 블록 (변수를 포착하는 블록)은 항상 힙이 아니라 스택에 할당되며, 복사 될 때만 힙으로 이동합니다. 비 클로저 블록은 정적으로 할당됩니다. – user102008