Ios 如何优化马赫数陷阱

Ios 如何优化马赫数陷阱,ios,optimization,cocos2d-iphone,box2d,Ios,Optimization,Cocos2d Iphone,Box2d,我知道以前有人问过这个问题,但对于如何解决这个问题,没有人给出任何有用的答案。我有一个cocos2d ios应用程序,它使用box2d物理引擎。我对它进行了性能测试,cpu在mach_msg_陷阱上花费了5.6%的时间。从我从其他问题中收集到的信息来看,由于应用程序处于空闲状态,mach_msg_陷阱似乎只是主线程的腰围时间。但我的应用程序不是空闲的。它的性能不稳定,悬停在每秒50帧的范围内。有什么方法可以配置它以获得额外的性能吗?或者这只是我写的一些糟糕代码的结果,如果是这样,我该如何优化它

我知道以前有人问过这个问题,但对于如何解决这个问题,没有人给出任何有用的答案。我有一个cocos2d ios应用程序,它使用box2d物理引擎。我对它进行了性能测试,cpu在mach_msg_陷阱上花费了5.6%的时间。从我从其他问题中收集到的信息来看,由于应用程序处于空闲状态,mach_msg_陷阱似乎只是主线程的腰围时间。但我的应用程序不是空闲的。它的性能不稳定,悬停在每秒50帧的范围内。有什么方法可以配置它以获得额外的性能吗?或者这只是我写的一些糟糕代码的结果,如果是这样,我该如何优化它



我正在测试iPodtouch第二代的调试版本的性能。这可能是问题的一部分。我把某些东西分成雪碧批次。但是有些精灵的孩子不是CCSprite,所以我不能将所有的东西都分组在一个批次中。我确实创造了一个子弹池,而不是不断地分配和释放它们。但这就是我表现不稳定的地方。当枪开始射击时,帧速率下降10-15 fps。我试着用仪器来追踪花了这么长时间的事情,但前两位的时间腰围是GLS,包括ccsprite draw和ccnode visit。第二个最吝啬的时间是马丘-味精陷阱。有没有其他方法可以找出bullet的代码中哪些是降低性能的原因?顺便说一句,你的书对学习cocos2d真的很有帮助:)

你读过它的答案了吗

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

如果您的性能“不稳定”,我不会浪费时间去查找无法修改或配置的系统级功能中的故障

其次,您没有提到您在哪里测量性能,即使用哪种设备。如果你在iphone3g或更老的手机上获得50 fps的速度,性能甚至可以被认为是好的。此外,您应该仅在发布版本中度量性能


就我个人而言,我只能建议您检查是否遵循了最佳实践,例如为您的精灵使用精灵表和纹理图集,将精灵和物理对象合并,而不是频繁创建和发布它们,减少了Box2D在其步长函数中运行的迭代次数。

是的,我已将示例透视图切换为运行示例时间