2013-05-11 4 views
-5

웹에서 70 개의 파일과 파일에서 많은 데이터를 읽는 회사의 코드를 만들어야합니다. 그러나 시뮬레이터에서는 실행까지 10 분이 걸립니다. 나는이 시간이 매우 높다고 믿는다. 코드를 개선하고 더 빨리 처리 할 수있는 방법이 있으면 경험이 많은 사람들에게 물어보십시오. 아래에는 내 코드의 스케치가 있습니다. 고맙습니다.IOS에서 루프를 개선하는 방법

for (int i=0; i<stockList.count;i++){ 
      stringToURL = [NSString [NSString stringWithFormat: @"http://www.mycompany.com/File%d",i]]; 
      url = [NSURL URLWithString:stringToURL]; 
      NSError *error = nil; 
      content = [[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error] componentsSeparatedByString:@"\n"]; 
      sum1 = 0.00; 
      sum2 = 0.00; 
      for (j=1; j<=90; j++) { 
       sum1 = sum1 + [[[content objectAtIndex:30*j+10] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue]; 
      } 
      for (j=1; j<=200; j++) { 
       sum2 = sum2 + [[[content objectAtIndex:33*j+10] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue]; 
      } 
      if ((sum2+sum1)/2 > target) [saveFile addObject:[NSString initWithformat:@"File%d,i]]; 
      NSLog(@"%d",i); 
     } 
+6

프로파일 러를 통해 코드를 실행하고 실제 문제가있는 곳을 확인하십시오. 확실히 70 개의 동기식 인터넷 파일 전송을 수행하는 것이 문제의 대다수가 될 것입니다. – rmaddy

+2

iPhone에서 작업하는 대신 이전에 서버에서 처리를 수행하는 방법이 없습니까? –

답변

2

는 그 코드에 상관없이 당신이 무엇 죽은 느린 없을 것입니다,하지만 특정 코드 때문에 반복 구문 분석 및 문자열 대체의 잔인하게 느려집니다. 아마도 autorelease 트래픽으로 인해 메모리 사용량이 급증 할 것입니다. 텍스트를 스크래핑하고 데이터로 처리하려고하는 특성입니다.

적어도 데이터는 기계로 읽을 수있는 형식으로 게시해야합니다. 아마도 JSON으로 인코딩 된 데이터 또는 plists로?

데이터 양이 주어지면 앱이 연결하고 데이터를 가져올 수있는 HTTP API를 제공하는 웹 서버가 있어야합니다. 더 나아가 API는 새로운 앱을 초기화하고 앱에서 데이터를 캐시하고 변경된 데이터에만 업데이트를 적용 할 수 있도록 "처음부터 대량로드"및 "XXXX 이후 델타를 제공합니다"유형의 종점을 제공 할 수 있습니다 .

+0

감사합니다. 모든 정보는 회사의 전략을 검토하는 데 유용 할 것입니다. – George

+0

@George 꽤 높은 수준의 평가입니다. 더 많이 알지 못하면 더 깊이 잠수하기가 어렵습니다. 하지만 실제로 클라이언트/서버 아키텍처가 필요한 것처럼 들립니다. 둘 이상의 클라이언트가 있고 실제로 클라이언트와의 병합/병합이 필요하다면 무거운 짐을 들일 수있는 서버가 필요합니다. – bbum