-5

Web から 70 個のファイルを読み取り、ファイルから大量のデータを読み取る会社用のコードを作成する必要があります。しかし、シミュレーターでは、実行に 10 分かかります。今回はかなり高いと思います。ですから、経験豊富な皆さんに、コードを改善して高速化する方法を 1 つ見つけたらお願いします。以下に、私のコードのスケッチがあります。ありがとうございました。

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);
        }
4

1 に答える 1

2

そのコードは何をしても非常に遅くなりますが、その特定のコードは、解析と文字列の置換が繰り返されるため、非常に遅くなります。自動解放トラフィックが原因で、おそらくメモリ使用量のスパイクも見られると思います..これは、テキストをスクレイピングしてデータとして処理しようとする性質です。

少なくとも、データは機械可読形式で公開する必要があります。おそらく、JSON でエンコードされたデータまたは plist としてですか?

理想的には、データ量を考えると、アプリが接続してデータを取得できる HTTP API を提供する Web サーバーが存在するでしょう。さらに良いことに、API は「ゼロからの一括読み込み」と「XXXX 以降のデルタを提供」タイプのエンドポイントを提供できます。これにより、新しいアプリを初期化し、アプリがデータをキャッシュできるようになり、変更されたデータにのみ更新を適用できます。 .

于 2013-05-12T00:06:31.433 に答える