2009-09-25 5 views
6

온라인에서 사용할 수있는 기사가 있습니까? iPhone 응용 프로그램 성능 향상에 대한 팁을 어디에서 찾을 수 있습니까? 메모리 관리 및 CPU주기에 관한 Apple의 문서를 읽었지만 그다지 도움이되지 않습니다.성능을위한 Xcode 빌드 설정 - iPhone 앱

또한 누군가 (릴리스 버전) 응용 프로그램의 성능을 향상시킬 수있는 몇 가지 XCode 설정을 제안 할 수 있습니까? 측정 및 최적화의

감사 주전자

+0

정확히 어디에서 실적 조회가 발생 했습니까? – pzearfoss

답변

8

쇼트, 컴파일러 최적화 수준은 응용 프로그램의 성능에 영향을 미칠 수있는 유일한 일에 관한 것입니다. 일반적으로 최적화 수준은 -Os입니다. 즉, 최적화 된 코드이지만 크기에 최적화되어 있습니다. 아이폰의 메모리가 제한되어 있기 때문에 코드 크기를 줄이는 것이 유용하다.

그 외에도 응용 프로그램의 성능을 측정하고 이에 따라 대응해야합니다. 인스 트루먼 트에는 도구가 많이 있으며,이 작업을 도와 줄 수 있습니다. 당신이 그들을 알아 내면, 도구는 실제로 꽤 멋져요.

실제로 아무 것도 측정하지 않았다는 점을 감안할 때 (그것이 좋음 - 좋게 만들고, 빨리 만들어라), 매달린 과일이 적을 수 있습니다. 너무 자주 다시 그렸습니까? 자동 시간 초과 이벤트가 너무 빨리 발생합니까? 등등 ... 조기 최적화의 함정에 빠지지 마십시오. 성공적인 최적화를 위해서는 & 반응을 측정해야합니다.

또한 시뮬레이터를 통해 거친 최적화를 수행 할 수 있지만 최종 연마 최적화를 수행하려면 장치에서 실행중인 앱에 대한 분석이 필요합니다.


(1) 데이터베이스 쿼리와 같은 사운드가 실제로 느립니다. 스키마 등을 알지 못한다면 그것이 사실인지 알기가 어렵습니다.

(2) 성능 분석을 수행 할 때 알 수없는 라이브러리의 함수에서 시간을 소비하는 경우 스택을 검색하여 해당 라이브러리를 호출하여 응용 프로그램이 성능 저하를 유발하는 이유를 파악합니다.

+0

의견을 보내 주셔서 감사합니다. 내 응용 프로그램은 기본적으로 플레이어에게 몇 가지 질문을하고 호환성을 찾는 UIKit 응용 프로그램입니다. 그래서 그것은 UIButtons, UIPickerControl, UITextView 등과 같은 몇 가지 UI 컨트롤을 가지고 있습니다. 사용자가 버튼을 선택하면, db에서 새로운 질문을 가져오고 있지만 앱이 응답하기까지 최대 2 ~ 3 초가 소요됩니다 시간이 많이 걸린다. Shark and Instruments와 같은 다양한 도구를 사용해 보았는데 CPU주기가 낭비되는 곳과 알 수없는 라이브러리에있는 곳을 발견했습니다. 감사합니다. – Jugs

2

기본적으로, 무슨 bbum했다. 실제 데이터를 가져 와서 거기서 가십시오. 즉, 상당한 영향을 미칠 수있는 몇 가지 컴파일 플래그가 있습니다.

  • -O0에서 컴파일하지 않았는지 확인하십시오. bbum이 지적한대로, -O는 아마도 당신이 원하는 것일 것입니다.
  • 많은 부동 소수점 계산을 수행하는 경우 ARMv6 용으로 빌드 할 때 "Thumb 용 컴파일"(-mthumb)이 설정되지 않았는지 확인하십시오. ARMv6에 설정된 thumb 명령에는 부동 소수점 명령어가 없으므로 사용하는 모든 부동 소수점 연산에 대해 shim을 수행합니다. 종종 이것은 코드 크기를 줄임으로써 상쇄되지만 부동 소수점이 많으면 성능 위험이 될 수 있습니다. 엄지 부분과 꺼져있는 부분에 대해 프로젝트의 일부분을 빌드 할 수 있습니다. 또한 ARMv7에 설정된 thumb2 명령어는 부동 소수점을 지원합니다.
+0

무엇이 -O0입니까? Google은 아무것도 표시하지 않습니다. – quantumpotato

2

iPhone 성능을 향상시키는 가장 좋은 방법은 컴파일러 최적화뿐만 아니라 더 나은 알고리즘을 통해 앱 성능을 향상시키는 것입니다.

일반적으로 컴파일러 최적화는 한 두 자리 또는 두 자리 백분율로 성능을 향상시킬 수 있습니다. 더 나은 알고리즘, 캐싱, 재구성 등을 사용하는 코드 최적화는 3 자리 백분율 향상을 가져올 수 있습니다.

내 앱의 성능이 눈에 띄게 향상되는 컴파일러 설정을 찾지 못했습니다. 귀하의 마일리지는 다를 수 있습니다.