2017-04-14 3 views
0

J'ai construit une application cordova sur Intel XDK dans JS. Il appelle une fonction en utilisant le setInterval toutes les quelques millisecondes.Intel XDK Slow APK

Lorsque je joue mon application sur l'émulation ou en chrome, cela fonctionne très bien. Aucun problème. Mais quand je construis l'application sur un téléphone Android (Galaxy S7), il est environ 4x aussi lent.

Y at-il une raison pour laquelle il est si lent sur mobile, mais pas sur PC? Peut-il être évité? Merci d'avance!

var func = function() { 
// code code code 
} 
setInterval(func,1); 

Sur le bureau Cela ouvrira environ toutes les 4 ms, tandis que sur mobile cela prend environ 20 à 30 ms, et varie super souvent.

Répondre

1

Vous supposez que tous les runtimes et processeurs JavaScript sont égaux. Malheureusement, ce n'est pas le cas. Les ressources de calcul de votre appareil mobile sont beaucoup moins performantes que votre ordinateur portable; le runtime de votre ordinateur portable/bureau dispose de beaucoup plus de ressources disponibles, comme un processeur plus rapide et plus puissant, plus de RAM, etc. De même, le runtime JavaScript de votre périphérique mobile exécute une exécution JavaScript optimisée pour l'efficacité de la batterie. ressources réduites par rapport à l'exécution optimisée des performances qui s'exécute sur votre ordinateur portable/bureau, avec ce qui peut se sentir comme des ressources presque illimitées. Même les différences dans les versions Android auront un impact, surtout si vous comparez les runtimes JavaScript dans les appareils Android 4.x aux appareils de version ultérieure. Il n'y a aucune règle qui dit que la boucle d'événements JavaScript sera capable de gérer quatre millisecondes dans toutes les implémentations, donc vous ne pouvez pas supposer que les performances que vous mesurez sur la plate-forme A seront reproductibles sur la plate-forme B. Il existe de réelles différences plates-formes et les différences réelles dans les restrictions et les objectifs de conception qui auront une incidence sur les résultats.

Cette page a une belle description de certains de la question qui peut se poser>https://javascript.info/settimeout-setinterval#summary < et cette présentation peut aider à comprendre plus sur la boucle d'événements JavaScript>http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html <

Lorsque vous exécutez votre application dans le processeur Intel XDK Simulez l'onglet que vous utilisez dans un navigateur Chromium de bureau. Il simule pas le matériel, il est strictement une commodité de déboguer la logique dans votre code, rien de plus.