47 votes

Double vs flottant sur l'iPhone

Je viens d'apprendre que l'iPhone ne peut pas faire de double natif, ce qui le rend beaucoup plus lent qu'un flotteur ordinaire.

Est-ce vrai ? Des preuves ?

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

71voto

Stephen Canon Points 58003

L'iPhone peut faire de l'arithmétique en simple et double précision dans le matériel. Sur le 1176 (iPhone original et iPhone3G), ils fonctionnent à peu près à la même vitesse, bien qu'il soit possible de placer plus de données en 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 sensiblement plus rapide.

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

12voto

Abel Points 24335

Ce diaporama donne un aperçu de la raison pour laquelle il n'y a pas de bonne virgule flottante et pourquoi il y en a une (l'unité de virgule flottante vectorielle). Apparemment, il est important de vérifier le "thumb mode" qui influence l'activation ou non du support de la virgule flottante. Ce n'est pas toujours une amélioration. Il montre comment trouver les bonnes instructions dans le code d'assemblage.

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

EDIT : voici une lecture intéressante sur optimisations de la virgule flottante sur l'ARM avec VFP et NEON SSE.

10voto

Carl Norum Points 114072

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X