2010-06-13 7 views
0

iPhone OS 용 게임/엔진을 개발 중입니다. Objective-C를 처음 사용하는 경우입니다.iPhone에서의 빠른 (비) 직렬화

저는 지오 메트릭 데이터와 텍스처에 대한 고유 한 바이너리 형식을 PVRTC에 중점을 둡니다. 그것은 속도와 공간에 관한 한 최선의 접근법이어야합니다. 정말 로딩 시간을 최소한으로 유지하고 가능하다면 매우 빠르게 저장할 수 있습니다.

그래서 이제 성능을 희생하지 않고도 "엔터티"항목을 영구히 유지하려고합니다.

먼저 NSKeyedArchiver를 사용하고 싶습니다. 내가 들었던 것으로부터, 그것은 매우 빠르지 않다. 또한 직렬화하려는 대부분은 일부 int 및 문자열이있는 float로 구성된 구조체이므로 모든 "개체 그래프"오버 헤드가 실제로 필요하지 않습니다.

NSArchiver가 더 적절했을 것입니다.하지만 그들은 어떤 이유로 든 아이폰을 쫓아 냈습니다.

그래서 지금 내 자신의 직렬화 체계를 다시 만들 생각입니다. 나는 NSKeyedArchiver가 느리다는 생각이 잘못되었다 (나는 단지 그것을 읽었고, 스스로 테스트하지 않았다)? 그렇다면, 속도를 희생시키지 않으면 서 구조체를 (포인터가없고 주로 플로트) 인코딩/디코딩하는 가장 좋은 방법은 무엇입니까?

+1

나는 확실히 그것을 스스로 테스트하고 그것이 당신의 필요에 충분히 빠르지 않은지 확인합니다. – Wevah

답변

1

테스트하지 않은 것을 최적화하는 것을 신경 쓰지 마세요. "충분합니다". 하나의 힌트; 바이너리 형식은 XML 형식의 약 2 배 빠른 속도와 거의 2 배의 메모리 효율적인 메모리입니다.

그 외에도 ... 음 ... 모든 경우에 특정 문제가 발생합니다. 한 번에 모든 데이터가 필요합니까? 스트리밍해야합니까? 임의의 하위 집합? 어떻게 연결된거야? 그것은 하나 또는 여러 개의 ObjC 객체로 재구성 될 것입니까? 데이터가 사전 통보됩니까? etc.etetc ...

0

yajl-objc을 사용하여 직렬화 및 REST 스타일 웹 서비스와 통신하는 데 좋은 결과를 얻었습니다. 그것은 내 필요에 충분히 효율적이며 사용하기 쉽다.

데이터의 양이 많지 않다면 NSKeyedArchiver 일 가능성이 높습니다.