Question

Je viens d’apprendre que l’iphone ne peut pas doubler en mode natif, ce qui les ralentit considérablement par rapport au flotteur normal.

Est-ce vrai? Preuve?

Je suis très intéressé par cette question car mon programme nécessite des calculs de haute précision et je devrai faire des compromis sur la vitesse.

Était-ce utile?

La solution

L'iPhone peut effectuer des calculs arithmétiques simple et double précision en mode matériel. Sur le 1176 (iPhone et iPhone3G d'origine), ils fonctionnent à peu près à la même vitesse, mais vous pouvez insérer davantage de données à simple précision dans les caches. Sur le Cortex-A8 (iPhone3GS, iPhone4 et iPad), l’arithmétique en simple précision est effectuée sur l’unité NEON au lieu de VFP et est considérablement plus rapide.

Assurez-vous de désactiver le mode pouce dans vos paramètres de compilation pour armv6 si vous effectuez un calcul en virgule flottante intensif.

Autres conseils

Ce diaporama explique pourquoi il n’ya pas de bonne virgule flottante et pourquoi (l’unité vectorielle à virgule flottante). Apparemment, il est important que vous vérifiiez le " mode pouce " qui influence si le support en virgule flottante est activé ou non. Ce n'est pas toujours une amélioration. Il montre comment trouver les bonnes instructions dans le code d'assemblage.

Cela dépend également de quelle version du téléphone vous souhaitez exécuter votre code. Le plus récent semble "plus capable". en faisant des calculs en virgule flottante.

EDIT: voici une lecture intéressante sur les optimisations à virgule flottante sur ARM avec VFP et NEON SSE.

Le manuel ARM1176JZF-S indique qu'il prend en charge les nombres à virgule flottante double précision. Vous devriez être en bonne forme. Voici un lien à la documentation PDF. Les iPhones ultérieurs sont des puces Cortex et ne devraient certainement pas être moins capables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top