Ma question est spécifique à l'iPhone, à l'iPod et à l'iPad, car je suppose que l'architecture fait une grande différence. J'espère qu'il y aura soit une spécification quelque part (pour les différentes puces peut-être), soit une façon fiable de mesurer T pour chaque instruction spécifique. Je sais que je peux utiliser n'importe quel nombre d'outils pour mesurer le temps processeur utilisé, la mémoire utilisée, etc. Je veux quantifier à un niveau inférieur. Donc, je suis capable de comprendre combien de fois je passe par la partie principale de l'algorithme. Par exemple, je itère n * (n-1)
fois dans une implémentation naïve, et entre n
(meilleur cas) et n + n * (n-1)
(pire des cas) dans une autre. Je peux aussi faire un décompte raisonnable du nombre total d'instructions (+ - =% * /, et des instructions logiques), et je peux comparer ces chiffres, mais cela suppose que le poids de chaque opération est le même. Aussi, je n'ai aucune idée de comment pondérer la valeur temps réelle d'une instruction logique (si, sinon, pour, alors) vs un opérateur mathématique ... est "si" autant travail que "+" chaque fois que je utilise le? J'aimerais savoir où trouver cette information. Donc, par souci de clarté, mon but est de découvrir combien de temps processeur je demande au CPU (ou GPU ou tout U) afin que je puisse concevoir un algorithme optimal autour de la durée du processeur. Quelqu'un peut-il me donner une idée de l'endroit où commencer pour le matériel iOS?Comment trouver la valeur temporelle de l'opération pour optimiser la conception d'un nouvel algorithme?
Modifier: This link to ClockServices.c et SIMD stuff dans le portail des développeurs pourrait être un bon début pour les personnes intéressées par cela. Encore quelques tasses de café ce soir et je pourrais y passer;)
La plupart de ce que je veux évaluer est juste C. Je serais heureux avec ça. Cependant, il serait bon de connaître le coût de l'itération à travers un NSArray; mais cela semble être complexe et variable. Je ne sais pas combien je peux espérer découvrir ... Je vais me contenter des opérations de base de C à coup sûr;) – Rab
Ouais j'ai pensé à cela (le million de tests), mais c'est un bon commentaire. J'ai envisagé de faire des tests comme vous le dites, mais j'ai deux craintes sur les résultats. Le premier est que mon test sera naïf d'une certaine manière, et je ferai beaucoup de travail pour obtenir des informations qui ne tiennent pas lorsque le compilateur décide de faire quelque chose de différent. Deuxièmement, je n'ai que quelques appareils, et certains ont des puces différentes.Donc, mon plus cher espoir est peut-être quelqu'un a des graphiques avec des estimations proches de la valeur temporelle des opérations C pour un processeur particulier. – Rab
Vous avez un petit rire du commentaire NSArray. J'espère que mon NSArray ne bluescreen sur moi ou quelque chose;) – Rab