Frage

Ich arbeite an einer Anwendung, die sehr große Zahlen zu handhaben müssen.

checkte ich ein paar verfügbar LargeNumber Klassen und haben ein paar gefunden, die ich mit glücklich bin. Ich habe eine Klasse für große ganze Zahlen und für große Gleitkommazahlen.

Da einige der Zahlen klein sein wird und einige große Frage ist, ob es sich lohnt, die Länge der Zahl überprüft und wenn es klein Gebrauch ist eine regelmäßige C # int oder Doppel und wenn ist groß Gebrauch die anderen Klassen Ich habe oder wenn ich schon die Große Integer und Large Float-Klassen sollte ich einfach mit ihnen bleiben auch für kleinere Zahlen.

Meine Überlegung ist rein Leistung. Werde ich genügend Zeit, auf die Mathematik für die kleineren Zahlen speichern, dass es sich lohnen würde jede Zahl nach ist zu prüfen, ist gesetzt in.

War es hilfreich?

Lösung

Wirklich schwer zu sagen - Hängt von 3rd-Party-Bibliotheken:)

Am besten wäre es, die System.Diagnostics.Stopwatch Klasse zu verwenden, führen Sie eine gazzillion verschiedene Berechnungen, Zeit, um sie und die Ergebnisse zu vergleichen, ich denke ..

[EDIT] - über das Benchmarks, würde ich eine Reihe von Benchmarks Ihren largeInt-Typen tun, die Berechnungen auf dem regulären 32/64 Bits Zahlen zu tun, und eine Reihe überprüft, ob die Zahl in der regulären Int32 / Int64 passen Typen (die sie sollten), „einziehenden“ sie diese Art, und dann die gleichen Berechnungen mit diesen Typen ausgeführt werden. Aus Ihrer Frage, das klingt wie das, was werden Sie, wenn die eingebauten Typen tun schneller sind ..

Wenn Ihre Anwendung für mehr Menschen als sich selbst abgezielt wird, versuchen sie auf verschiedenen Maschinen laufen zu lassen (Single-Core, Multi-Core, 32-Bit, 64-Bit-Plattformen), und wenn die Plattform einen großen Einfluss in der Zeit zu haben scheint, die Berechnungen nehmen, irgendeine Art von Strategie-Muster verwenden, um die Berechnungen unterschiedlich auf verschiedene Maschinen zu tun.

Viel Glück:)

Andere Tipps

Ich würde erwarten, dass eine anständige große Zahl Bibliothek in der Lage wäre diese Optimierung zu tun, auf seine eigenen ...

würde ich sagen, ja, wird die Prüfung mehr als für sich selbst zahlen, solange Sie genügend Werte innerhalb des regulären Bereichs haben.

Die Logik ist einfach: eine ganze Zahl Zusätzlich ist eine Montageanleitung. In Verbindung mit einem Vergleich, ist, dass drei oder vier Befehle. Jede Software-Implementierung solchen Betrieb wird wahrscheinlich viel langsamer.

Optimal ist diese Überprüfung in den LargeNumber erfolgen Bibliotheken selbst. Wenn sie es nicht tun, können Sie einen Wrapper müssen zu vermeiden, überprüft alle über den Ort hat. Aber dann müssen Sie auch die zusätzlichen Kosten der Verpackung denken.

in einem Projekt gearbeitet, wo die gleichen Felder benötigt, um sehr große Zahlen zu verarbeiten und zugleich handels Präzision für sehr kleine Zahlen.
Das endete mit der Speicherung von Feldern (Mantisse und Exponent) für jede Anzahl solcher Art.
Wir haben eine Klasse für Mantisse / Exponent-Berechnungen und es eine gute Leistung.

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