다음 링크는 C 기본 배열과 NSArray의 성능 비교입니다.

http://memo.tv/nsarray_vs_c_array_performance_comparison

http://memo.tv/nsarray_vs_c_array_performance_comparison_part_ii_makeobjectsperformselector

NSArray가 여러가지 편리한 기능과 환경을 제공하지만, 성능만큼은 C 기본 배열을 따라갈 수 없습니다. 테스트 범위 내에서 100배~500배의 성능 차이가 보이네요.

이 테스트 결과만을 보면 C 배열이 매우 우월해 보이지만, 사실은 그렇지 않습니다. 두번째 포스팅의 답글 중, 이 내용에 대한 반박이 있습니다. 이 포스팅은 오래된 것이라 예전에는 맞을지 몰라도 지금은 그렇지 않다는군요. 그리고 이 비교는 순수한 이터레이션 성능만을 논하고 있는데, 실제 병목은 이터레이션 자체보다 이터레이션간 수행하는 작업에 의해 좌우되므로 이 테스트가 큰 의미가 없다는 뜻입니다.

또한, 필자는 아이폰에서의 최적화를 위해 이 비교를 했는데, 실제 현 세대의 아이폰에서는 C 배열이나 NSArray 배열은 거의 차이가 없다고 합니다. 3GS에서는 아예 완전히 같은 결과가 나오므로 하드웨어 수준의 Objective-C에 최적화가 이루어져을 가능성이 있다는 답글도 있습니다. 답글의 필자가 직접 비교한 결과는 여기에 있습니다.

http://www.formconstant.net/diagrams/?p=40&preview=true

테스트 내용만 두고 보면 C 기본 배열을 사용하는 것이 좋겠다고 생각했지만, 답글의 내용까지 고려한다면 코코아 프레임워크의 기능을 전혀 제공하 수 없는 C 기본 배열을 굳이 사용할 필요는 없다고 생각됩니다.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>