有没有可能让iOS模拟器的性能更像真正的iPhone?

有没有可能让iOS模拟器的性能更像真正的iPhone?,iphone,ios,ipad,ios-simulator,Iphone,Ios,Ipad,Ios Simulator,苹果的iOS模拟器很棒——我一直在使用它,因为它比在真正的设备上运行要容易得多。但它也有一些缺点,其中之一就是它太强大了。因为它可以访问计算机的资源,我经常发现在iOS模拟器上运行良好(顺利)的代码并不总是在真正的设备上顺利运行,在本例中,就是我的iPhone4 这个问题的标题说明了一切,但我要再说一遍:是否有可能让iOS模拟器像真正的iOS设备一样运行?没有,苹果就是这样销售开发许可证的 您可以使用某种实用程序来限制CPU和RAM,但这充其量只是一种猜测。您可以使用“nice”或“renice

苹果的iOS模拟器很棒——我一直在使用它,因为它比在真正的设备上运行要容易得多。但它也有一些缺点,其中之一就是它太强大了。因为它可以访问计算机的资源,我经常发现在iOS模拟器上运行良好(顺利)的代码并不总是在真正的设备上顺利运行,在本例中,就是我的iPhone4


这个问题的标题说明了一切,但我要再说一遍:是否有可能让iOS模拟器像真正的iOS设备一样运行?

没有,苹果就是这样销售开发许可证的


您可以使用某种实用程序来限制CPU和RAM,但这充其量只是一种猜测。

您可以使用“nice”或“renice”命令更改模拟器较低的调度优先级,但除非同时运行一些其他优先级较高的任务,否则可能不会有多大帮助


就个人而言,我认为你最好花点时间掌握在设备上运行的诀窍。这其实没那么难,你最终会对你的应用程序的真正性能有一个更好的了解。

把它放在你的应用程序中的几个地方,在那里你可以利用大量的内存空间。这将生成内存警告,并导致iOS释放视图,否则尝试释放内存。您可以同时找到所有viewDidUnload bug;-)

可能会在这里或那里增加一些延迟,但你必须决定在哪里以及延迟多少。这里有一个100毫秒的延迟:

#if TARGET_IPHONE_SIMULATOR
{ 
    const struct timespec delay = { 0, 100000000 }; 
    nanosleep(&delay, NULL);
}
#endif

您必须在实际设备和模拟器上对特定应用程序进行基准测试,因为差异因应用程序的功能而异

假设模拟器比你的代码快20倍。您可以尝试在应用程序委托中创建一个重复的NSTimer,并在计时器回调中每隔0.05秒将主线程休眠47.5毫秒(或其他间隔和比率),然后查看这是否会将模拟应用程序的速度降低到设备上应用程序的速度。你可能需要尝试反复试验,以获得合适数量的“泥”,从而使你的应用程序陷入泥潭


在计时器回调中,您还可以监视应用程序进程的VM脏足迹,并在应用程序扩展到一定数量时终止应用程序。

我想从业务角度来看这是有意义的-您知道任何此类实用程序吗?我想知道是否可能达到疯狂的程度,创建具有有限处理能力和RAM的虚拟机。这听起来很合理,也很耗时:)但这可能是我唯一的选择。嗯。。。有趣。也许我会在同时运行笔记本电脑上的每个应用程序时尝试一下……我不确定这将如何使模拟器像真实设备一样工作。它仍然不会像真实设备一样工作,但在真实设备上,您的内存有限,偶尔会收到内存警告,并且必须正确处理它们。真正的设备也比sim卡慢,在sim卡中战略性地使用时间延迟可以用来减缓发生得太快的操作。最好的解决方案是在sim卡和各种设备(3GS、4S、iTouch、iPad等)上开发和测试
#if TARGET_IPHONE_SIMULATOR
{ 
    const struct timespec delay = { 0, 100000000 }; 
    nanosleep(&delay, NULL);
}
#endif