gpt4 book ai didi

ios - 如何优化 mach_msg_trap

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:14:09 28 4
gpt4 key购买 nike

我知道之前有人问过这个问题,但没有人就如何解决这个问题给出任何有用的答案。我有一个使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com