为什么雨燕多线程更有效的导入模块使用的功能是什么时候?

问题描述 投票:0回答:1

我要离开了很多“无关紧要”的细节在这里,以帮助人们专注于实际问题。

我有一个雨燕项目涉及计算大量(数值积分和多参数最适合等)。为了加快速度,我目标是使用并行处理。

使用XCTest班,我发现我的闭合叫我的模块中定义的函数,如果我使用DispatchQueue.concurrentPerform有一个迭代,这需要时间吨。当5次迭代重复,它运行慢约5%(我很高兴这一点)。

NB的功能是一个结构(我的收藏积分例程)静态函数。

然而,如果我把功能在单独的模块和导入此,与1次迭代重复试验采用了类似的时间t。但现在,当我用5次迭代尝试,呼叫花费两倍的时间(其实慢105%)。

迅速版本:4.2.1 OS:MACOS 10.14.3的Xcode 10.1处理器:6芯的Core i7(Mac mini的2018)

所有“对象”是从功能参考到处使用,除了结构和值类型。

再次快速总结:使用DispatchQueue.concurrentPerform(),相比于基准时间为1次迭代相同的模块定义的函数的,5次迭代是慢5%。使用已经导入的模块中定义的函数做同样的过程然而,当,基线时间保持为1次迭代不变,但5次迭代是慢105%。

谁能解释为什么出现这种情况,并希望建议避免这种放缓,同时保持我的收藏品的导入的模块中的一种方式?

随意,如果您需要了解更多信息发问。

swift multithreading concurrency
1个回答
0
投票

问题已解决。不知道是什么原因了。

删除我的项目,创造了一个清新,导入文件回它,在工作区中包含它。

现在比单个线程不再只有10%的5个并发线程处理(做5倍的工作量)。还是愿意爱知道是什么引起的问题,将是一件好事,如果效率下降仅为5%曾在前面提到的情况。

但对于这种改善只是从开始一个新的项目,我不会狡辩!

© www.soinside.com 2019 - 2024. All rights reserved.