- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道之前有人问过这个问题,但没有人就如何解决这个问题给出任何有用的答案。我有一个使用 box2d 物理引擎的 cocos2d ios 应用程序。我对其进行了性能测试,CPU 将 5.6% 的时间花在了 mach_msg_trap 上。从我从其他问题中收集到的信息来看,似乎 mach_msg_trap 只是由于您的应用程序空闲而导致的主线程浪费时间。我的应用程序并没有闲置。它的性能不稳定,徘徊在 50 fps 区域。有什么方法可以配置它以获得额外的性能吗?还是这只是我编写的一些错误代码的结果?如果是,我该如何优化它?
我正在第二代 ipod touch 上测试调试版本的性能。这可能是问题的一部分。我在 sprite 批处理中对某些东西进行分组。但是有些 sprite 的 child 不是 ccsprites,所以我不能将所有东西都放在一个批处理中。我确实创建了一个子弹池,而不是不断地分配和释放它们。但这是我表现不稳定的地方。当枪开始射击时,帧率下降 10-15 fps。我试图使用工具跟踪花费了这么长时间的时间,但前两个时间腰线是 glValidateState,其中包括 ccsprite 绘制和 ccnode 访问。第二个最重要的时间腰围是 mach_msg_trap。有没有其他方法可以找出子弹代码中导致性能下降的原因?顺便说一句,你的书对学习 cocos2d 很有帮助:)
最佳答案
你读过this question的答案了吗? ?
mach_msg_trap 不会浪费时间闲着。它是一个在应用程序进程可以继续正常执行之前等待某些结果的函数。当然它也会在您的应用程序空闲时运行,但我怀疑您的情况是否如此。相反,这 5% 可能来自等待磁盘 I/O,例如从闪存加载文件时。
如果您的性能“不稳定”,我不会浪费时间尝试查找您无法修改或配置的系统级功能中的故障。
其次,你没有提到你在哪里测量性能,即哪个设备。如果您在 iPhone 3G 或更早版本上获得 50 fps,则性能甚至可以被认为是不错的。此外,您应该仅在发布版本中衡量性能。
就我个人而言,我只能建议检查您是否遵循了最佳实践,例如为您的 Sprite 使用 Sprite 表和纹理图集,汇集 Sprite 和物理对象而不是频繁地创建和释放它们,以及减少 Box2D 的迭代次数正在其步进函数中运行。
关于ios - 如何优化 mach_msg_trap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945016/
mach_msg_trap 错误是什么意思?我正在开发一个带有核心数据的应用程序。如果第二次“使用”不同的线程,则在 ManagedObjectContext 时出现此错误。我有一个生产者消费者类型的
我知道之前有人问过这个问题,但没有人就如何解决这个问题给出任何有用的答案。我有一个使用 box2d 物理引擎的 cocos2d ios 应用程序。我对其进行了性能测试,CPU 将 5.6% 的时间花在
我在目标上分析我的 iPhone 应用程序,根据 Instruments,65% 的时间花在 mach_msg_trap 上。 我有一个永远运行的后台线程,并使用 performSelectorOnM
当我在连接的 iPhone 上从 XCode 运行我的 Flutter Dart 应用程序时,XCode 在“libsystem_kernel.dylib`mach_msg_trap”中的任何用户交互
当我在我的 iPhone 应用程序中使用 UIWebView 加载特定网页时,它崩溃并出现 mach_msg_trap 错误。其他网站在我的应用程序中加载正常。以这个 URL 为例: [rssArti
我在 macOS Sierra、Xcode 8 上,每当我尝试在实际的 iOS 10 设备上模拟后台获取时都会崩溃。使用模拟器时不会发生这种情况。这发生在所有项目中,包括那些新创建的项目。 l
我是一名优秀的程序员,十分优秀!