Est MOD opération de plus de CPU que la multiplication?
Pourquoi est MOD
opération plus cher que multiplication
par un peu plus d'un factor of 2
? Veuillez être plus précis sur la façon de la CPU effectue l'opération de division et renvoie le résultat de MOD opération.
Dans l'exemple suivant, le fils de chaque candidat pour un deuxième. Le test a été effectué sur un SPARC
processeur.
//multiplication
void someThread() {
int a = 10234;
while (true) {
opers++;
a = a * a;
a++;
}
//opers ~ 26 * 10^6 in a sec.
}
//MOD
void someThread() {
int a = 10234;
while (true) {
opers++;
a = a % 10000007;
a++;
}
//opers ~ 12 * 10^6 in a sec.
}
Les deux exemples de code sont les mêmes.
Fixe le problème.
Où est la version avec
Comparer les algorithmes de multiplication (en.wikipedia.org/wiki/Binary_multiplier) avec la division entière algorithmes (en.wikipedia.org/wiki/Division_(numérique)). Je ne sais pas ce que le sparc met en œuvre pour la division. Peut-être que la non-restauration de l'algorithme.
-1 score pour cette question? Peut le downvoters expliquer / commenter?
Fixe le problème.
Où est la version avec
+
? ^^Comparer les algorithmes de multiplication (en.wikipedia.org/wiki/Binary_multiplier) avec la division entière algorithmes (en.wikipedia.org/wiki/Division_(numérique)). Je ne sais pas ce que le sparc met en œuvre pour la division. Peut-être que la non-restauration de l'algorithme.
-1 score pour cette question? Peut le downvoters expliquer / commenter?
OriginalL'auteur Leonid | 2010-11-05
Vous devez vous connecter pour publier un commentaire.
Algorithmes (processeurs exécuter la division et la multiplication par les algorithmes mis en œuvre dans les portes) pour la division sont plus coûteux que pour la multiplication. Comme une question de fait, certains algorithmes de division qui ont une bonne complexité à l'aide de la multiplication comme une étape fondamentale.
Même si vous utilisez de la naïveté des algorithmes qui sont apprises à l'école. Ils ont tous deux la même complexité asymptotique, mais la constante de la division est plus grand (vous devez trouver les chiffres et qui n'est pas négligeable, de sorte que vous pouvez casser et de corriger le désordre).
OriginalL'auteur AProgrammer
MOD est une opération de division, pas une opération de multiplication. La Division est plus cher que la multiplication.
Plus d'informations sur le MOD ici: http://en.wikipedia.org/wiki/Modulo_operation
Robert: La même chose peut être dit à propos de la division - c'est à dire la division est plus cher parce que c'est un MOD, tandis que les MOD est plus cher que la multiplication. J'aimerais connaître plus de détails au niveau CPU est pourquoi la division/mod plus cher que la multiplication. Cette réponse se répète ma question.
C'est la bonne réponse, de toute évidence, l'OP n'a pas pris suffisamment au sérieux pour comparer les mod de div. Il devrait y avoir un endroit poussiéreux coin de l'Internet, quelque part qui parle de processeur sparc internes.
La question doit être mauvais, puis si la bonne réponse n'a rien dit à part indiquant ce qui était évident. Suivant que j'ai approfondi la question et a demandé de fournir plus de détails sur l'utilisation de l'UC.
OriginalL'auteur Robert Harvey
L'Instruction de la latence et de débit pour les processeurs AMD et Intel, processeurs x86
Une opération est juste plus lent de manière intrinsèque à la CPU 🙂
OriginalL'auteur
Oui, le mod est plus cher que la multiplication, comme il est mis en œuvre par la division. (Cpu généralement retourner à la fois le quotient et reste de la division.) Mais les deux threads utilisent la multiplication. copier/coller de l'erreur?
OriginalL'auteur zvrba