Frage

Für Intensive, number-crunching ich überlege mir, die Verwendung von festen-Punkt anstelle von floating-point.Werd es natürlich egal, wie viele bytes des festen Punkt-Typ ist in der Größe, auf was für eine CPU es werde laufen auf, wenn ich (für Intel) der MMX-oder SSE-oder was auch immer neue Dinge kommen...

Ich Frage mich, ob diese Tage, wenn die floating-point-läuft schneller als je zuvor, ist es immer eine überlegung Wert, festen Punkt?Gibt es Allgemeine Faustregeln, wo wir sagen können, es wird Materie durch mehr als ein paar Prozent?Was ist die übersicht von 35.000 Fuß numerische Leistung?(BTW, ich nehme eine Allgemeine CPU, wie in den meisten Computern vorhanden, kein DSP oder spezielle embedded-Systeme.)

War es hilfreich?

Lösung

Es ist immer noch lohnt. Gleitpunkt ist schneller als in der Vergangenheit, aber mit festen Punkt ist, auch. Und fixiert ist immer noch der einzige Weg zu gehen, wenn Sie Präzision sorgen darüber hinaus garantiert durch IEEE 754.

Andere Tipps

In Situationen, in denen Sie mit sehr großen Datenmengen zu tun hat, kann Fixpunkt doppelt so effiziente Speicher, z.B. eine vier Byte lange Ganzzahl wie auf einen Acht-Byte-Doppelentgegengesetzt. Eine Technik, die oft in großen geospatial Datensatz verwendet wird, um alle Daten zu einem gemeinsamen Ursprung zu reduzieren, so dass die höchstwertigen Bits angeordnet werden können und mit fester Punkt ganzen Zahlen für den Rest arbeiten. Floating-Point ist nur dann wichtig, wenn der Punkt tatsächlich schwimmt, das heißt Sie mit einer sehr breiten Palette von Zahlen mit sehr hohen Genauigkeit zu tun hat.

Ein weiterer guter Grund für die Verwendung von fixed-decimal, ist, dass die Rundung ist viel einfacher und berechenbarer.Die meisten Finanz-software verwendet festen Punkt Dezimalzahlen beliebiger Genauigkeit, mit halb-selbst Rundung um echtes Geld.

Die fast immer schneller festen Punkt zu verwenden (Erfahrung von x86, Pentium, 68k und ARM). Es kann allerdings auch von der Art der Anwendung. Für Grafikprogrammierung (einer meiner wichtigsten Verwendungen von festen Punkt) Ich habe in der Lage gewesen, den Code mit vorgebauten Cosinus-Tabellen zu optimieren, Protokolltabellen etc. Aber auch die grundlegenden mathematischen Operationen haben auch schneller unter Beweis gestellt.

Ein Kommentar auf Finanzsoftware. Es wurde in einer früheren Antwort, sagte, die Festpunkt nützlich für finanzielle Berechnungen ist. In meiner eigenen Erfahrung (Entwicklung von großen Treasury-Management-System und umfangreicher Erfahrung in der Verarbeitung von Kreditkarten) würde ich NICHT Fixpunkt verwenden. Sie werden Rundungsfehler haben entweder mit oder festen Punkt schweben. Wir verwenden immer ganze Beträge Geldbeträge darstellen, die Mindestmenge möglich (1c für Euro oder Dollar) zu zählen. Dies sicherzustellen, dass keine Teilbeträge immer verloren sind. Wenn komplexe Berechnungen zu tun Werte umgewandelt werden verdoppelt werden anwendungsspezifische Rundungsregeln angewendet und die Ergebnisse werden zurück auf ganze Zahlen umgewandelt.

Mit festen Punkt, wenn die Hardware nicht Floating-Point oder die Hardware-Implementierung saugt nicht unterstützt.

Auch Vorsicht, wenn Klassen für sie zu machen. Etwas, das man würde schnell denken könnte tatsächlich ein Hund entpuppen, wenn es um Profilierung kommt aufgrund (un) erforderlichen Kopien von Klassen. Das ist eine andere Frage für eine andere Zeit jedoch.

Ein weiterer Grund, Festpunkt zu verwenden ist, dass ARM Geräte, wie Mobiltelefone und Tablets, Mangel an FPU (zumindest viele von ihnen).

Für Echtzeitanwendungen zu entwickeln macht es Sinn, Funktionen zu optimieren, mit Festkommaarithmetik. Es gibt Implementierungen von FFTs (Fast Fourier Transformation), sehr importan für Grafiken, die auf sich auf Gleitkomma-Arithmetik seine Verbesserungen auf Effizienz stützen.

Da Sie eine Allzweck- CPU verwenden, würde ich vorschlagen, nicht festen Punkt verwenden, es sei denn, die Leistung für Ihre Anwendung ist so kritisch, dass Sie jeden tic zählen müssen. Der Aufwand der Fixpunkt Implementierung und mit Themen wie Überlauf zu tun ist einfach nicht wert, wenn Sie eine CPU haben, die es für Sie tun.

IMHO, Fixpunkt ist nur erforderlich, wenn Sie für Gleitkommaoperationen einen DSP ohne Hardware-Unterstützung verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top