-5

我必须为我的公司创建一个代码,它可以从网络中读取 70 个文件以及来自这些文件的大量数据。但在模拟器中执行需要 10 分钟。我相信这个时间非常高。所以,我问你,有经验的人,你是否发现了一种改进代码并让它更快的方法。下面是我的代码草图。谢谢你。

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?

理想情况下,考虑到数据量,会有一个 Web 服务器提供 HTTP API,您的应用程序可以连接到该 API 并获取数据。更好的是,该 API 可以提供“从头开始批量加载”和“给我自 XXXX 以来的任何增量”类型的端点,这将允许您初始化新应用程序并让您的应用程序缓存数据,仅将更新应用于更改的数据.

于 2013-05-12T00:06:31.433 回答