|
|
1
2
我唯一的问题是,他们没有一个标准的方式来告诉来电者,他们已经完成。 您可以定期轮询NSOperationQueue—当其计数为0时,就没有剩余的了。您还可以使每个操作增加一些计数器-当计数为50时,您就完成了。或者,每个操作都可以使用performSelectorOnMainThread在主线程上发布一个通知,说明其已完成。 即使只有一个内核,你也会看到性能的提升——很多时候,主线程在等待用户输入/图形绘制等时会被阻塞。加上多核手机和iPad可能会在一年内推出(完全是猜测——但它们会出现)。
|
|
|
2
1
你在一个单核上,所以线程可能不会有多大帮助,开销甚至可能会减慢速度。 首先要做的是使用工具来分析您的代码,看看什么可以加快速度。一旦你做了,你可以看看一些具体的瓶颈优化。 一个简单的方法(如果您可以使用GCD)是dispatch\u apply(),它可以让您循环您的匹配,以适合您的硬件的最佳方式自动执行它们,并且在所有匹配完成之前不会返回。 |
|
3
0
但同时模拟所有匹配并不一定能提高性能。 |
|
|
4
0
您可以从@downtoge获得特定问题的解决方案,但一般来说,我想给您一些关于多线程的建议:
2/如果你的程序有一些需要时间的大IO、数据库或网络进程,那么你可以考虑多线程,因为现在数据处理不需要所有时间,它需要等待加载数据。在这种情况下,多线程将显著提高性能。但是您仍然需要小心,因为线程切换有开销。 也许你只需要一个线程来进行IO处理,然后有一个缓存层来共享图像/数据。然后,您只需要主线程来循环并进行模拟 3/如果您希望50个模拟似乎同时发生,以便用户观看,还需要多线程:) |
|
5
0
|
|
|
KanKonga · 为什么这个swift代码没有显示在文本字段中? 2 年前 |
|
|
Community wiki · 目标的Xcode构建阶段的自动更新? 3 年前 |
|
|
Anton Timonin · 如何正确地将动态pod库更改为静态? 3 年前 |
|
|
Igor · 在OSX中,捆绑包的用户首选项在哪里? 3 年前 |
|
|
narner · 从Swift包创建Cocoapods框架 3 年前 |