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

 
Renat:

Es ist leicht, von einer gescheiterten Aussage zur nächsten zu springen.

Wenn Sie einen Prozessor mit rationalen Datentypen haben und wenn ein anderer Satz von SSExxx-Befehlen diese schneller verarbeiten kann als double, dann können Sie rationale Zahlen in die Diskussion über die Beschleunigung von Berechnungen einbringen. Wenn Sie Tests der SMA-Berechnung mit verschiedenen Methoden veröffentlichen und zeigen, dass Sie mehr als das Doppelte gewinnen, dann wird es eine Rede von der Praxis sein.

In der Zwischenzeit ist die ursprüngliche Aussage über die Beschleunigung realer mathematischer Berechnungen durch den Wechsel zu ganzen Zahlen gescheitert.

Du hast was?! Ich bin auf gar nichts gesprungen. Wenn Sie nur die Hälfte lesen. Leider. Ich habe etwa zwanzig Mal über rationale Brüche gesprochen. Aber bis ich darauf hingewiesen habe, dass es sich um Brüche handelt, hat es niemand verstanden. :) Ich sage Ihnen, es ist lustig. Leider. :(


:) Gescheitert - Ich habe von ganzen Zahlen und dem Konzept des PUNKTES gesprochen, und ein Punkt ist immer der Nenner. 13000 Punkte, wenn ein Punkt 10000 entspricht - dann ist der Wert = 13000/10000 = 1,3 :)

 
Academic:

Was machst du denn da? Ich bin NIRGENDWO gesprungen. Wenn Sie nur die Hälfte lesen. Es tut mir leid. Ich habe Ihnen schon zwanzig Mal von rationalen Zisternen erzählt. Aber bis ich darauf hingewiesen habe, dass es sich um Brüche handelt, hat es niemand verstanden. :) Ich sage Ihnen, das ist lächerlich. Leider. :(


:) Gescheitert - Ich habe von ganzen Zahlen und dem Konzept des PUNKTES gesprochen, und ein Punkt ist immer der Nenner. 13000 Punkte, wenn ein Punkt 10000 entspricht - dann ist der Wert = 13000/10000 = 1,3 :)

Sie schlagen vor, drei 8-Byte-Longs (ganzzahliger Teil + Nenner + Zähler) anstelle von 8-Byte-Doubles zu verarbeiten. Und wenn man anfängt, die Longs in etwas Kürzeres zu schneiden, kommt es bei ganz angemessenen Berechnungen zu einem Überlauf.

Sogar drei Ints und das sind mehr als ein Take.

 
Urain:
Sie schlagen vor, drei 8-Byte-Longs (ganzzahliger Teil + Nenner + Zähler) anstelle von 8-Byte-Doubles zu verarbeiten. Und wenn man anfängt, die Longs auf etwas Kürzeres zu kürzen, kommt es bei ganz angemessenen Berechnungen zu einem Überlauf.

Sie haben den schlechtesten Weg gewählt, um es umzusetzen. Nach dem, was Sie mir erzählt haben, ergibt das keinen Sinn. Wer von uns weiß es besser?

Es gibt eine Zahl in Kilometern - sie ist int32 und braucht nichts anderes. Sie müssen ihn nur nicht mit einem Wert in einer anderen Dimension addieren. :) Wenn Sie eine höhere Genauigkeit als in Kilometern wünschen, gehen Sie zu Nanometern über. :) Und speichern Sie sie als ganze Zahl. :)

 

TheXpert:

Und zweitens bezweifle ich stark, dass das Rechnen mit Double langsamer ist als mit rationalen Zahlen.

Wapchet langsamer. Aber er hat uns einen falschen Link gegeben.

1. Die Implementierung in BOOST normalisiert die Rationszahlen bei jeder Operation mit ihnen. Das muss nicht bei jedem gemacht werden, denn es ist teuer. Besser ist es, dies nur dann zu tun, wenn tatsächlich die Gefahr eines Nennerüberlaufs besteht.

2. Die Reduktion auf einen gemeinsamen Nenner (genauer gesagt, die Berechnung des größten gemeinsamen Teilers) wird dort nicht durch den schnellsten Algorithmus durchgeführt. Bei weitem die schnellste.

Mit der Korrektur hat er recht, was die Geschwindigkeit der rationalen Zahlen angeht.

Ich würde sie in mql haben, wenn arithmetische Operationen zum Nachladen verfügbar wären. Ohne sie wäre meine Syntax sehr mühsam (funktional), also vergessen Sie sie... С++ :-)

--

Aber es wäre wirklich cool, wenn es Unterstützung auf Prozessorebene gäbe...

 
MetaDriver:

Wapchetta langsamer. Nur der von ihm angegebene Link war falsch.

1. Die Implementierung in BOOST normalisiert die Rationszahlen bei jeder Operation auf ihnen. Man muss das nicht bei jedem machen, denn das ist teuer. Besser ist es, dies nur dann zu tun, wenn tatsächlich die Gefahr eines Nennerüberlaufs besteht.

2. Die Reduktion auf einen gemeinsamen Nenner (genauer gesagt, die Berechnung des größten gemeinsamen Teilers) wird dort nicht durch den schnellsten Algorithmus durchgeführt. Es gibt bei weitem eine schnellere Variante.

Allerdings hat er Recht, was die Geschwindigkeit der Zahlen angeht.

Ich würde sie in mql haben, wenn arithmetische Operationen zum Nachladen verfügbar wären. Ohne sie würde ich eine sehr langweilige Syntax bekommen (funktional), also vergessen Sie es... С++ :-)

--

Aber es wäre wirklich cool, wenn es Unterstützung auf CPU-Ebene gäbe...

Die Arithmetik selbst ist langsamer, weil wir immer noch mit Fließkomma rechnen müssen (wenn wir reine Double- und Long-Arithmetik vergleichen), wenn wir Doubles in Integer-Arithmetik umwandeln, verlieren wir. Allein die wiederkehrende NOD-Berechnung würde log(N) Operationen erfordern, ganz zu schweigen von der Tatsache, dass bei jeder Multiplikationsoperation geprüft werden muss, ob ein Überlauf vorliegt. Dann 4 weitere Divisionen (zwei durch NOD und zum Extrahieren des ganzzahligen Teils und des Bruchrests).

Außerdem müssten Sie für diesen ganzen Unsinn noch mehr Speicherplatz zuweisen, als Sie für die Aufnahme benötigen würden.

 
MetaDriver:

Wapchet langsamer. Nur der von ihm zitierte Link war unglücklich.

Beweise? Sie sind in meinen Augen sicherlich maßgeblicher als der ursprüngliche Autor, aber das ist eine starke Aussage.

Deshalb würde ich gerne vergleichende Tests sehen.

 
Urain:

Die Arithmetik selbst ist langsamer, weil sie noch mit der Gleitkommaberechnung zu tun hat (wenn man reine Double- und Long-Arithmetik vergleicht),

1. wenn Sie Doubles in Ganzzahl-Arithmetik umwandeln, verlieren Sie.

2. allein die wiederkehrende NOD-Berechnung würde log(N) Operationen erfordern, ganz zu schweigen von der Tatsache, dass

(3) Bei jeder Multiplikationsoperation muss geprüft werden, ob ein Überlauf vorliegt.

4. Dann 4 weitere Divisionen (zwei durch NOD und zum Extrahieren des ganzzahligen Teils und des Bruchrests).

5. Außerdem müssen Sie immer noch mehr Speicher zuweisen, um all diesen Unsinn zu speichern, als Sie für die Aufnahme benötigen.

1. Dies ist ein einmaliger Vorgang für jeden Take. Der Verlust ist unbedeutend, dann sind die Gewinne solide. :) Ich nehme an, 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 dieselbe 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 die gesunden Ideen ablehnt... Zusammen mit dem schmutzigen Wasser... :(

 
TheXpert:

Deshalb würde ich gerne vergleichende Tests sehen.

Ich werde es ausprobieren. Auf mql5, falls es dazu kommt... :)

Ich brauche nur etwas Zeit. Ich müsste eine Bibliothek schreiben.

 
MetaDriver:

Ich werde es ausprobieren. In mql5, wenn es dazu kommt... :)

Und wozu? C++ wird akzeptiert.

MetaDriver:

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

Das Problem ist, dass er sich für schlauer als andere hält und ständig versucht, jemand anderen zum Narren zu halten.

Und er vermasselt es. An manchen Orten sogar sehr viel.

 
MetaDriver:

Das Problem mit dem Akademiker ist nicht, dass er falsch liegt. Es geht darum, dass er andere falsch aussehen lässt.

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

Ich dringe nicht in die Köpfe anderer ein. Aber ich bin invertiert. :) Wer hat um Rat gefragt: "Soll ich mich dem Thema widmen?" :)

Und dann bin ich diejenige, die diejenige ist, die diejenige ist... :) Nun, kommen Sie nicht zu mir.

Was ist der Unterschied im Allgemeinen? Was gibt es zu diskutieren? IMHO bleibt alles auf demselben embryonalen Niveau wie vorher. Es gibt also kein Problem mit mir - es ist, als würde ich nicht existieren. :)