2011-03-25 1 views
2

저는 웹 서비스에서 많은 사람들의 목록을 역 직렬화하는 MonoTouch iOS 앱을 보유하고 있습니다. XML은 매우 간단합니다. 루트 노드는 사람의 목록이고, 각 사람은 5 개의 속성 만 갖고 있습니다. 목록은 상당히 큽니다 ... 약 1000 명..NET XmlSerializer 클래스를 사용할 때 다른 누군가가 MonoTouch에서 느린 비 직렬화를 경험 했습니까?

아이폰 시뮬레이터에서 역 직렬화를 실행할 때, 작업은 약 1 초 정도 걸립니다. iPhone 3GS에서 실행하면 약 13 초 정도 걸립니다. 물론, 시뮬레이션은 x86 코드를 실행하고 있으며, 앱은 ARM 코드로 실행됩니다. 게다가, 사용 가능한 마력은 sim보다 전화기에서 적습니다. 그러나 그것은 그것이 정말로 많은 차이를 만들겠습니까 ???

누구나 MonoTouch로 .NET 직렬화가 느린 경험이 있습니까? 그 원인을 아는 사람이 있습니까? 그렇다면 어떤 방법으로 대처할 수 있습니까? 아마도 스레딩 또는 다른 직렬화 라이브러리일까요?

답변

6

예, 오래 걸릴 수 있습니다. 시뮬레이터에서는 코드를 jit하고 특수화 된 디시리얼라이저를 빌드 할 수 있습니다. 장치에서 전체 deserialization 트리를 해석해야합니다. 이진 직렬화를 사용해보십시오, 더 좋을 것입니다,하지만 최선의 방법은 sqlite로 개체 모델을 이동하는 것입니다.

+0

이것이 맞는 것 같습니다. 대신 들어오는 XML에 맞게 사용자 지정 된 LINQ-to-XML 코드를 작성했습니다. 확장 성이있는 것은 아니지만 어쨌든 서비스에 들어오는 데이터에는 많은 변화가 없습니다. – NovaJoe

관련 문제