【问题标题】:Is it possible to make the iOS Simulator perform more like a real iPhone?是否有可能让 iOS 模拟器的性能更像真正的 iPhone?
【发布时间】:2012-01-08 10:56:49
【问题描述】:

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

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

【问题讨论】:

    标签: iphone ios ipad ios-simulator


    【解决方案1】:

    不,这就是 Apple 销售开发许可证的方式。

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

    【讨论】:

    • 我想这从商业角度来看是有道理的——你知道任何这样的实用程序吗?
    • 我想知道是否有可能达到疯狂的程度,创建具有有限处理能力和 RAM 的虚拟机。
    • 这听起来很合理,而且很耗时 :) 不过这可能是我唯一的选择。
    【解决方案2】:

    您可以使用“nice”或“renice”命令将模拟器的调度优先级更改为较低,但除非同时运行其他一些更高优先级的任务,否则它可能无济于事。

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

    【讨论】:

    • 嗯...有趣。也许我会在我的笔记本电脑上同时运行每个应用程序时尝试这样做......
    【解决方案3】:

    将它放置在您的应用程序中您会使用大量内存空间的几个地方。这会产生内存警告并导致 iOS 释放视图并尝试释放内存。您可以同时找到所有 viewDidUnload 错误 ;-)

    #if TARGET_IPHONE_SIMULATOR
        SEL memoryWarningSel = @selector(_performMemoryWarning);
        if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) {
            NSLog(@"simulated memory warning");
            [[UIApplication sharedApplication] performSelector:memoryWarningSel];
        }
    #endif
    

    也许可以在这里和那里添加一些延迟,但您必须决定在哪里延迟以及延迟多少。这是一个 100 毫秒的延迟:

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

    【讨论】:

    • 我不确定我是否理解这会使模拟器像真实设备一样工作。
    • 它仍然不会像真实设备一样运行,但在真实设备上,您的内存有限,偶尔会收到内存警告,必须正确处理。真实设备也比 sim 慢,并且在 sim 中策略性地使用时间延迟可用于减慢发生得太快的操作。最好的解决方案是在 sim 和各种设备(3GS、4S、iTouch、iPad 等)上进行开发和测试
    【解决方案4】:

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

    假设模拟器在您的代码上的测量速度提高了 20 倍。您可以尝试在应用程序委托中创建一个重复的 NSTimer,并在计时器回调中每隔 0.05 秒对主线程进行一次 nanosleep 47.5 毫秒(或其他间隔和比率),看看这是否会使模拟应用程序的速度降低到大约您设备上的应用程序。您可能需要反复试验才能获得适量的“泥浆”,让您的应用陷入困境。

    在计时器回调中,您还可以监控应用进程的虚拟机脏足迹,并在应用扩展一定数量时终止该应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多