FPP*_*FPP 2 macos performance multithreading apple-m1
我开发了一个 macOS 应用程序,它严重依赖多线程(呼叫中心模拟器)。它在我的 iMac 2019 上运行良好,并很好地填充了所有核心。在我的测试场景中,它模拟了应用程序。1.4 米奥。总共 100 次迭代中的电话呼叫,每次迭代作为并行调度队列上的调度项。
\n\n现在我买了一台配备 M1 Apple Silicon 的新 Mac mini,我很想看看该测试机的性能如何发展。嗯,它\xe2\x80\x99 还不错,但没有我预期的那么好:
\n| 系统 | 期间 |
|---|---|
| iMac 2019、英特尔 6 核 i5、3.0 GHz、Catalina macOS 10.15.7 | 19.95秒 |
| Mac mini、M1 8 核、Big Sur macOS 11.2、Rosetta2 | 26.85秒 |
| Mac mini,M1 8 核,Big Sur macOS 11.2,原生 ARM | 17.07 秒 |
进一步研究后,我注意到在模拟开始时,M1 Mac 的所有 8 个核心都被正确填满,但几秒钟后,只剩下 4 个高效核心被使用。
\n\n我已阅读 Apple 文档 \xe2\x80\x9eOptimize for Apple Silicon with Performance and Efficient Cores\xe2\x80\x9c 并仔细检查迭代的调度队列是否设置正确:
\nlet simQueue = DispatchQueue.global(qos: .userInitiated)\nRun Code Online (Sandbox Code Playgroud)\n但没有成功。运行几秒钟后,高性能核心显然不再被利用。我什至尝试设置队列并将 qos 设置.userInteracive为 \xe2\x80\x99 也没有帮助。我还使用适当的 qos 标记了调度项目,但这并没有改变任何东西。在我看来,其他应用程序(例如 XCode)确实使用高性能核心,甚至更长时间。
有人知道如何强制 M1 Mac 使用高性能核心吗?
\n“M1 8核心”确实是“M1 4性能+ 4个省电核心”。我预计它的性能会比 Intel 6 核心高一些,但也不会高很多。您确实看到了,比 6 个英特尔内核快 15%,或者大约与 7 个英特尔内核一样快。目前的M1芯片是低端处理器。“比Intel六核好一点”已经相当不错了。
您的代码必须在性能核心上运行,否则根本没有机会接近英特尔的性能。在该图中,没有任何信息告诉您使用了哪些核心。
最有可能发生的情况是,所有内核开始运行,每个内核都尝试完成八分之一的工作,大约 8 秒后,性能内核完成其工作。然后节能核心将其工作转移到性能核心。您只是将图像误解为只有低性能核心在完成工作。
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |