Warum ist eine division teurer ist als eine Multiplikation?

Ich bin nicht wirklich versucht, etwas optimieren, aber ich erinnere mich, dies zu hören, von Programmierern die ganze Zeit, ich nahm es als eine Wahrheit. Nachdem alle Sie sollen wissen, diese Dinge.

Aber ich Frage mich, warum ist die Teilung tatsächlich langsamer als Multiplikation? Ist das nicht die division nur ein besserer Subtraktion, und Multiplikation ist ein herrliches hinaus? Mathematisch So sehe ich nicht, warum geht die eine oder andere Weise hat rechnerisch sehr unterschiedliche Kosten.

Kann jemand bitte klären Sie den Grund/Ursache dafür, so weiß ich, anstelle von dem, was ich hörte von anderen Programmierer, die ich vor der Frage was bedeutet: "da".

  • [citation-needed]
  • "After all they are supposed to know this stuff." - Sie werden überrascht sein, was die meisten Leute nicht wissen.
  • Suchen Sie für die Abteilung ist langsamer/teurer als die Multiplikation online, und Sie werden es überall sehen. Ich glaube nicht, dass irgendjemand behauptet, es ist nicht langsamer.
  • Sie haben Fragen, ein Elektronik-Ingenieur, ist es, eine Schaltung design-problem. Erstellen eines hardware-Multiplizierer ist ziemlich einfach, eine hardware-divider ist nicht. Praktische Teiler-schaltungen iterativ sind und daher länger dauern. Fragen Sie an electronics.stackexchange.com
  • Wikipedia (vgl. Artikel-FLOPS) und anderen Quellen (en.community.dell.com/techcenter/high-performance-computing/w/...) verlangen, dass typische CPUs ausführen können 4 Gleitkomma-Operationen pro Taktzyklus. Dies scheint unabhängig von der Art. Daraus folgt, dass diese Aufteilung wäre so teuer/Billig wie die Multiplikation. Die ehrenamtliche Arbeit zu tun, ein benchmark?
  • Kurz gesagt: quotient Schätzung und Korrektur-Schritte.
  • Du hast Recht, dass die Multiplikation zerfällt in mehrere Ergänzungen und Teilung zerfällt in mehrere Subtraktionen. Der Unterschied ist, dass die Ergänzungen bei der Multiplikation parallel durchgeführt werden können, in der Erwägung, dass in der Abteilung, die Sie nicht tun können, die nächste Subtraktion bis beenden die Vorherige ein und machen Sie einen Vergleich. So ein hardware-Multiplizierer wird das ausnutzen dieser inhärenten Parallelität durch Berechnung und Summierung viele sub-Produkte, die gleichzeitig auf Kosten von erhöhten Bereich real-estate. Division nicht über diesen Luxus.
  • Mehrere jsperf-benchmarks existieren, z.B. jsperf.com/multiplication-vs-division-lars Die Ergebnisse variieren von 0 Unterschied zur Multiplikation 4x so schnell. Ich Frage mich, ob javascript-Optimierung untergräbt einige der tests, indem wir bemerken, dass der berechnete Wert wird nicht verwendet (damit die "control" - test-Fall).
  • Warum ist die division so viel komplexer als andere arithmetische Operationen?, Warum funktioniert die hardware-Abteilung sehr viel länger dauern als die Multiplikation?

InformationsquelleAutor Joan Venge | 2013-04-01
Schreibe einen Kommentar