首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化mach_msg_trap

如何优化mach_msg_trap
EN

Stack Overflow用户
提问于 2011-10-30 12:55:37
回答 1查看 5.8K关注 0票数 3

我知道有人曾问过这个问题,但就如何解决这个问题,却没有人给出任何有帮助的答案。我有一个使用cocos2d物理引擎的box2d ios应用程序。我对它进行了性能测试,cpu在mach_msg_trap上花费了5.6%的时间。根据我从其他问题中收集到的信息,mach_msg_trap似乎只是您的应用程序空闲的主要线程。不过,我的应用程序并不空闲。它有摇摇欲坠的性能和徘徊在50 fps地区。有什么方法来配置这个以获得额外的性能吗?或者这仅仅是我编写的一些错误代码的结果,如果是的话,我如何优化它呢?

我正在测试ipod第二代的调试版本中的性能。这可能是问题的一部分。我把某些东西分成几个精灵批次。但是有些精灵的孩子不是ccsprites,所以我不能把所有的东西都分类成一批。我确实创建了一个子弹池,而不是不断地分配和释放子弹。但这就是我得到不稳定表演的地方。当一支枪开始射击时,碎片会下降10到15 fps。我试着跟踪使用仪器花了这么长时间的事情,但前两名是glValidateState,包括ccsprite绘图和ccnode访问。第二个乞丐是mach_msg_trap。有没有其他方法来找出子弹的代码中有什么在降低性能呢?顺便说一句,你的书对学习cocos2d确实有帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-30 17:57:24

你读过this question的答案了吗

mach_msg_trap并不是在浪费空闲时间。它是一个等待某些结果的函数,然后应用程序的进程才能继续正常执行。当然,当你的应用程序空闲时,它也会运行,但我怀疑你是否会这样。相反,这5%可能来自等待磁盘I/O,例如,当从闪存加载文件时。

如果您的性能“不稳定”,我不会浪费时间来查找您无法修改或配置的系统级函数中的错误。

第二,你没有提到你在哪里测量性能(哪种设备)。如果您在iPhone 3G或更高版本上获得50 fps,其性能甚至可以被认为是好的。此外,您应该只在发布版本中度量性能。

就我个人而言,我只能建议您检查一下您是否遵循了最佳实践,比如为您的精灵使用sprite工作表和纹理地图集,汇集sprite和物理对象,而不是频繁地创建和发布它们,以及减少Box2D在其step函数中运行的迭代次数。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7945016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档