Ein wenig überrascht :) Ich dachte, ich teile das und stelle eine NICHT rhetorische Frage. - Seite 22

 
MetaDriver:

1. Dies ist ein einmaliger Vorgang für jeden Take. Der Verlust ist unbedeutend, dann solide Gewinne. :) Ich gehe davon aus, dass der ursprüngliche Quotient einmal logarithmiert und in eine ganzzahlige Darstellung umgewandelt wird.

2. Dies ist richtig. Obwohl es schnell ist, weil es einen schnellen Algorithmus gibt, der Bitverschiebungen verwendet.

3. nicht mehr als Überlaufkontrollen.

4. Der Integer-Teil muss überhaupt nicht zugewiesen werden. Der Bruch wird als Paar von Longs und, wenn möglich, als Paar von Ints gespeichert.

5. genau die gleiche Menge, wenn sie als Paar von Longs gespeichert wird, und die Hälfte, wenn genügend Ints vorhanden sind (dies hängt von den Anforderungen des Algorithmus ab).

Wenn wir bedenken, dass der Hauptspeicherverbraucher ein Zitat ist, dann ist der Platzgewinn bei der Ganzzahlendarstellung unbestreitbar.

Das Hauptaugenmerk liegt jedoch nicht auf der Einsparung von Speicherplatz, sondern auf der Beschleunigung. Dies ist viel wichtiger.

--

Das Problem mit Academician ist nicht, dass er falsch liegt. Es geht darum, dass er andere in ein schlechtes Licht rückt.

Das ist es, was die Anwesenden irritiert und gesunde Ideen ablehnt... Zusammen mit dem schmutzigen Wasser... :(

Wladimir, bist du nicht verwirrt? Was Sie beschrieben haben, ist arithmetische Low-Level-Double-und-Flotte, die gleiche Arithmetik, die "Akademiker" vorschlägt, einzuführen erfordert (auch ohne Zuweisung eines ganzen Teil) mindestens zwei Mantis für die Speicherung.

Und wo bleibt da die Wirtschaftlichkeit? 8 Bytes für den Double und 2*4 Bytes für den Int.

Bestenfalls kommen Sie zu dem Ergebnis, das bereits umgesetzt ist.

 
Urain:

Wladimir, bist du nicht verwirrt? Was Sie beschrieben haben, ist eine Low-Level-Arithmetik von double und fleet, dieselbe Arithmetik, die "Akademik" vorschlägt, erfordert (auch ohne die Zuweisung eines Integer-Teils) mindestens zwei Mantis für die Speicherung.

Wo liegt also die Ersparnis? 8 Bytes für den Double und 2*4 Bytes für den Int.

Bestenfalls kommen Sie zu dem Ergebnis, das bereits umgesetzt ist.

Speichern Sie also alle Punkte (Nenner) von eindimensionalen Größen an derselben Stelle - sie sind gleich groß. :)

Erstellen Sie einen Typ - einen Wert in einem Zehntel eines Punktes und das war's. Und speichern Sie diesen Nenner separat.

 
MetaDriver:

Ich werde es versuchen. Auf mql5, wenn Sie wollen... :)

Ich brauche einfach Zeit. Ich werde eine Bibliothek schreiben müssen.

Ich habe es einmal versucht, es gibt keine Süßigkeiten, es ist reine Zeitverschwendung.

Zerlegen Sie das Double in eine Binärzahl und stellen Sie es als zwei Ints dar, und Sie werden feststellen, dass alles, was Sie beschreiben, bereits in Double-Arithmetik implementiert ist.

Nur die Arithmetik ist auf einer niedrigen Ebene implementiert, und Sie werden sie auf einer höheren Ebene durchführen, was zu Leistungs- und Speicherverlusten führt.

 

Meine fünf Cents.

Ganze Zahlen sind eine natürlichere Form der Darstellung von Kursinformationen. Schließlich ist es unmöglich, dass eine Anzahl von Punkten nicht eine ganze Zahl ist. Die Speicherung solcher Zahlen ist wirtschaftlicher, und daher ist die Download-Geschwindigkeit auf Festplatten- und Speicher-Prozessor-Ebene höher. Algorithmen sind viel schneller als Algorithmen für reelle Zahlen, und SSE-Stapeloperationen sind außer Konkurrenz. Aber es gibt ein großes Problem mit ganzen Zahlen - nur zählende Menschen können mit ihnen arbeiten. Und natürlich muss das Terminal asm-Unterstützung haben. Für den Massenverbraucher MQ sind diese Zahlen nicht geeignet.


Übrigens ist das Problem der Überlaufkontrolle auf der Ebene der Hardware-Interrupts implementiert, daran ist nichts auszusetzen, im Gegenteil, man hat schon vor langer Zeit darüber nachgedacht, als die Prozessoren entwickelt wurden. Im Prinzip gibt es viele Möglichkeiten und Tricks bei der Programmierung ganzzahliger Algorithmen, aber all das ist, ich wiederhole, nicht für den Massengebrauch gedacht.


Ich verstehe nicht, worum es bei dem Streit geht. Können Sie einen schnelleren Test-/Optimierungsalgorithmus erstellen, als Sie ihn in Ihrem Tester haben? Man kann, aber es wird kein universeller Algorithmus sein, der in einem Gewächshaus in der Gegenwart des Autors lebt - nur sehr wenige Menschen brauchen so etwas - es ist kein Massenprodukt. Aus diesem Grund können Aussagen im Sinne von "meins ist schneller" nur als Beweis für Unvergleichbarkeit und mangelndes Verständnis der Tatsache gewertet werden, dass man Unvergleichbares nicht vergleichen kann.

 
Urain:

Ich habe es einmal versucht, es gibt keine Süßigkeiten, es ist reine Zeitverschwendung.

Zerlegen Sie das Double in eine Binärzahl und stellen Sie es als zwei Ints dar, und Sie werden feststellen, dass alles, was Sie beschreiben, bereits in Double-Arithmetik implementiert ist.

ZZY Nur die Arithmetik ist auf einer niedrigen Ebene implementiert, und Sie werden sie auf einer höheren Ebene durchführen, was zu Leistungs- und Speicherverlusten führt.

"Wenn ich nicht aufhole, halte ich mich warm", wie der Hahn, der die Henne verfolgt, zu sagen pflegte... :)

Ich habe schon lange darüber nachgedacht, es ist wohl an der Zeit, es zu versuchen.

 
MetaDriver:

"Wenn ich sie nicht einhole, halte ich mich warm", sagte der Hahn und jagte die Henne... :)

Ich habe schon eine Weile darüber nachgedacht und denke, es ist an der Zeit, es zu versuchen.

Rekursiver NOD-Algorithmus zu geben?
 
TheXpert:

Und wozu? C++ wird akzeptiert.

Ich werde es mir ansehen. Ich muss es erst fühlen. Ich bin selbst neugierig darauf.
 
Urain:
Möchten Sie einen rekursiven NOD-Algorithmus?
Wenn mit Bitverschiebungen, nur zu. Wenn mit Modulo-Division, dann nicht.
 
MetaDriver:
Wenn es um Bitverschiebungen geht, nur zu. Wenn mit Division durch Modulo, dann nicht.

Wollen Sie eine Zahl (nicht notwendigerweise ein Vielfaches von 2) durch eine andere Zahl (nicht notwendigerweise ein Vielfaches von 2) mit Hilfe einer Bitverschiebung dividieren?

Okay, ich werfe ein, was ich habe, und dann können Sie selbst entscheiden, ob Sie es brauchen oder nicht.

//+------------------------------------------------------------------+
long GreatestCommonDivisor(long v0,long v1)
  {
   return(GCD(fmax(fabs(v0),fabs(v1)),fmin(fabs(v0),fabs(v1))));
  }
//+------------------------------------------------------------------+
long GCD(long max,long min)
  {
   if(min>0)return(GCD(min,max%min));
   else return(max);
  }
//+------------------------------------------------------------------+
 
DDFedor:
Die Smiley-Gesichter in Ihren zukünftigen Beiträgen werden ausgeschnitten. Behalten Sie das im Hinterkopf.

Danke, dass Sie es zugeben - Sie haben Emoticons entfernt, aber wer entfernt ganze Beiträge?

Nebenbei bemerkt, Academic, Ich finde es großartig, dass Sie einen so genannten "Rechner" haben, aber wenn Sie genauer sein wollen, haben Sie eine Option , ihn während des Handels automatisch zu optimieren?

Grund der Beschwerde: