Emulateurs iOS 6 lents sur Xcode 5 + Mavericks

Bonjour


 


Juste une petite info pour vous éviter de vous arracher les cheveux, les émulateurs iOS 6.x sur Xcode 5.0.1 et Maverics ont un comportement anormalement lent. Pas de problème avec l'émulateur iOS 7.


 


Il y a plusieurs posts à  ce sujet sur les forums développeurs Apple ou même sur stackoverflow...


 


J'ai passé un petit moment hier à  essayer de trouver l'origine d'un problème de NSTimer sur iOS 6 avant de me rendre compte que c'était l'émulateur.


 


Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur

    C'est le cas sous ML aussi ? Car mes TableView scrollent hyper lentement sur le simu... Et j'ai plus de devices en iOS6 (fais ch....)




  • C'est le cas sous ML aussi ? Car mes TableView scrollent hyper lentement sur le simu... Et j'ai plus de devices en iOS6 (fais ch....)




     


    Je ne l'avais pas remarqué avec Xcode 5.0 sur ML, tu es en 5.0 ou 5.0.1 ?

  • LeChatNoirLeChatNoir Membre, Modérateur

    5.0...

  • AliGatorAliGator Membre, Modérateur
    Perso j'ai pas remarqué de lenteur particulière avec simu iOS6 plutôt que 7. Je suis en Xcode5 & Mavericks.


    Par contre j'ai remarqué que Xcode mettais + de temps à  lancer mon appli sur device connecté en USB qu'avant. Je ne sais pas si c'est lié au passage iOS6 -> iOS7 de mon device ou au passage Xcode4 -> Xcode5.
  • SmySmy Membre
    novembre 2013 modifié #6

    J'ai trouvé un moyen super simple pour le reproduire en 30 secondes :


    - Créer un nouveau projet à  partir du template iOS/Single View Application


    - Définir le iOS Deployment Target à  iOS 6.0


    - Modifier le ViewController.m pour ajouter dans viewDidLoad un timer à  50ms :



    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES]; 

    - Ajouter dans cette même classe le handleTimer :



    - (void)handleTimer:(NSTimer *)timer
    {
    NSLog( @timer );
    }

    - Lancer sur simulateur iOS 6.1 et iOS 7.0


     


    Chez moi, pas de problème en iOS 7, j'ai bien un log toutes les 50 ms. En iOS 6.1, c'est très erratique, avec du 50, 70, 80, 100ms.


    Le tout sur un MBA Core i5 1,7 GHz / 4 Go de RAM avec uniquement Xcode, donc assez de puissance...


  • AliGatorAliGator Membre, Modérateur

    - Ajouter dans cette même classe le handleTimer :


    - (void)handleTimer:(NSTimer *)timer
    {
    NSLog( @timer );
    }

    Tu utilises les NSLog pour faire du Time Profiling, toi ?... Forcément qu'on peut arriver à  des conclusions erratiques avec ça ^^

    En effet j'observe la même chose de mon côté, avec le simu 6.0 (j'ai pas dl le 6.1) c'est plus variable.
    Mais ça ne me choque pas outre mesure. Utiliser des NSTimer, dont " comme tout mécanisme de timer ou de pause type sleep ou autre " les délais demandés n'ont jamais été garanti mais toujours du Best Effort (surtout en environnement MT).
    Déjà  il faudrait mieux utiliser des instruments de Time Profiling. En plus, il faudrait surtout faire le même test sur 2 devices réels, donc 2 iPhones de même modèle, mais l'un sous iOS6 l'autre sous iOS7. Car vu toute la refonte qui a été faite sur iOS7, au niveau performances en particulier, c'est peut-être le système iOS lui-même qui est plus véloce depuis sa version iOS7 ?


  • Tu utilises les NSLog pour faire du Time Profiling, toi ?... Forcément qu'on peut arriver à  des conclusions erratiques avec ça ^^


    En effet j'observe la même chose de mon côté, avec le simu 6.0 (j'ai pas dl le 6.1) c'est plus variable.

    Mais ça ne me choque pas outre mesure. Utiliser des NSTimer, dont " comme tout mécanisme de timer ou de pause type sleep ou autre " les délais demandés n'ont jamais été garanti mais toujours du Best Effort (surtout en environnement MT).

    Déjà  il faudrait mieux utiliser des instruments de Time Profiling. En plus, il faudrait surtout faire le même test sur 2 devices réels, donc 2 iPhones de même modèle, mais l'un sous iOS6 l'autre sous iOS7. Car vu toute la refonte qui a été faite sur iOS7, au niveau performances en particulier, c'est peut-être le système iOS lui-même qui est plus véloce depuis sa version iOS7 ?




     


    C'est pour l'exemple. Je l'ai remarqué avec un vrai projet :)


     


    Tout fonctionne parfaitement sur les terminaux/toutes les versions d'iOS (y compris sur iPhone 3GS en iOS 4.3). C'est vraiment lié au simulateur iOS 6 sur Mavericks, je n'avais pas du tout le même comportement la semaine dernière sur Mountain Lion.

  • J'ai ouvert un Bug Report, on verra bien.


     


    Je n'ai pas testé sur la 5.0.2 GM d'aujourd'hui, mais il n'y a rien dans le change log à  ce sujet...


Connectez-vous ou Inscrivez-vous pour répondre.