异步I/O和性能

Kev*_* Wu 2 asynchronous objective-c grand-central-dispatch ios

我目前正在使用Grand Central Dispatch(iOS开发)从远程服务器下载图像.

这需要从主线程调度新线程; 然后从侧面线程发生从服务器下载图像的任务.任务完成后,我显然会用图像更新主线程视图.

我的问题是,如果上述方法实际上通过打开两个TCP通道实际上提高了性能(下载速度),或者我主要是在另一个线程上执行同步操作,从而使其异步,从而不会使它更快.

根据我的观察,表现保持不变.也许有人在这里可以解释"引擎盖下"的理论并将理论应用到我上面的具体案例中?

MoD*_*oDJ 6

下载速度可能不会发生任何性能变化,因为主要问题是下载执行速度有多快,这取决于网络.您在iOS应用程序中的逻辑无法阻止主线程,因此无论如何都需要在后台线程上运行.即使您的图像非常大,一旦下载整个图像,PNG的解码时间将非常快.所以,你真的只是在等待下载完成.你也没有做太多,因为iOS已经在幕后使用了对http请求的流水线操作,因此对同一地址和端口的多个请求可能会被推送到同一个套接字.真正加快速度的唯一方法是使用更高级的图形压缩,以减少要下载的数据总量.