在主线程上解析XML是否更快?为什么?



我使用LRResty和NSXMLRequest来显示API的搜索结果。以下是我的代码:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[[LRResty client] get:searchEndpointURL withBlock:^(LRRestyResponse *response) {
    //NSLog(@"Results:nnn%@", [response asString]);
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[response responseData]];
    parser.delegate = self;
    //TODO: Why does this work faster than running in the background?
    [parser parse];
    //[parser performSelectorInBackground:@selector(parse) withObject:nil]
}];

出于某种原因,当我解析阻塞主线程时,我的搜索显示控制器的更新速度比没有阻塞主线程更快。

较慢的性能是否与解析器没有在主线程上运行有关?为什么呢

主线程的性能会变慢,因为应用程序还有更多的工作要做。创建线程本身会产生一些开销,然后处理时间必须在忙于处理UI事件和绘制UIViews的主线程和进行解析的后台线程之间共享。如果你在主线程上进行解析,你会阻止应用程序对UI进行任何操作,所以它需要做的事情更少,而且会更快完成。但是你没有得到任何UI更新,所以显然这是不好的。

最新更新