Fehler, Irrtümer, Fragen - Seite 2163

 
Комбинатор:


Ich glaube, dass Sie bei Optimierungen viel besser sind, aber aus der Perspektive eines gewöhnlichen Benutzers sieht es seltsam aus - Sie behaupten, dass der MQL-Compiler Code erzeugt, der mit C++ vergleichbar ist, aber dann stellt sich heraus, dass die Arrays in MQL überhaupt nicht schnell sind.

Verwaltete/verwaltete Sprache bedeutet eindeutig, dass Arrays streng kontrolliert werden müssen. Ohne dies kann die Sprache nicht sicher sein.

Bei statischen Arrays ist die Steuerung einfacher und kann in der Phase der Code-Optimierung teilweise vereinfacht werden. Bei dynamischen Arrays gibt es mehr Kontrolle und es ist schwierig, sie zu vereinfachen.

Der Code wird auf C++-Qualitätsniveau generiert, aber es gibt sicherlich einen Overhead bei verwalteten Dingen. Mathe, Schleifen und alles andere ist auf C++-Niveau.

 
Комбинатор:

der Array-Index ist bestenfalls auch auf einen einzigen direkten Assembler-Befehl reduziert, so dass die Frage immer noch besteht

In verwalteten Sprachen nur in statischen Arrays mit konstanter Indizierung. Das heißt, wenn der Optimierer zu 100 % sicher ist, dass eine Überprüfung der Grenzen und der Pufferverfügbarkeit nicht erforderlich ist.

Wenn die Bedingungen verletzt werden, erscheint die Prüfung auf Vorhandensein von Puffer und Grenzen.

Dies ist ein Grundwissen, das man beim Programmieren haben sollte.

 
Vladimir Pastushak:
Wenn eine überladene Funktion ein enumToString hat, dann gibt es ein Problem, wenn es für eine ganze Zahl aufgerufen wird...

Ich habe auf diese https://www.mql5.com/ru/forum/1111/page1297#comment_1382986 geachtet.

Aber sie haben nichts geändert, so dass ::EnumToString in Vorlagen in vielen Fällen nutzlos ist

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2015.02.16
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Projekte weiter erforschen und über folgende Punkte stolpern

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Warum brauchen wir Projekte, wenn wir begrenzt sind?

Ein Projekt ist PROJECT!!!!!, das 1000 Bilder, Sounds, Hilfedateien haben könnte, und wir müssen alles in einen Ordner packen?

Ich bin kein Fan von Unordnung in Verzeichnissen, viel Qualität zu schreiben sollte nicht nur im Kopf, sondern auch überall in Ordnung sein ...



 
A100:

Ich habe auf Folgendes geachtet: https: //www.mql5.com/ru/forum/1111/page1297#comment_1382986

Aber es wurde nichts geändert, so dass ::EnumToString in Vorlagen in vielen Fällen nutzlos ist

Hallo von fxsaber:

// Для enum-ов
template <typename T>
string EnumToString2( T Value ) { return(EnumToString(Value)); }
 
// Для кастомных типов
template <typename T>
string EnumToString2( const T& ) { return(NULL); }
 
 
// Для стандартных типов
#define  ENUMTOSTRING(A) string EnumToString2( A ) { return(NULL); }
  ENUMTOSTRING(int)
  ENUMTOSTRING(string)
// .....
#undef  ENUMTOSTRING
 
#define EnumToString EnumToString2
 
template<typename T>
string ETS( T t ) { return ( typename( t ) == "int" ? "OK" : ::EnumToString( t ) ); }
enum ENUM {     ENUM__ };
 
void OnStart()
{
        ENUM i1 = ENUM__;       Print( ETS( i1 )); //нормально
        int  i2 = 0;            Print( ETS( i2 )); //"ошибка компиляции"
        string i3 = NULL;       Print( ETS( i3 )); //"ошибка компиляции"
}
 
Комбинатор:

Die Entnahme eines Elements nach Index aus einem einfachen Array sollte also eine sehr schnelle Operation sein, nicht wahr?

Die Nichtabrufbarkeit ist jedoch noch schneller. Irgendwie habe ich festgestellt, dass mein Programm anderthalb Mal schneller arbeitet, wenn ich Fließkommazahlen anstelle von ganzen Zahlen verwende. Ich habe es mir damit erklärt, dass mein FPU-Coprozessor meistens im Leerlauf war und hauptsächlich mit ganzen Zahlen arbeitete. In meinem Fall kann man das auch in Betracht ziehen: SQRT wird in der FPU ausgeführt, die ALU macht Zeit frei, sie beginnen weitgehend parallel zu arbeiten.
 
Vladimir Pastushak:

Projekte weiter erforschen und über folgende Punkte stolpern

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Warum brauchen wir Projekte, wenn wir begrenzt sind?

Ein Projekt ist PROJECT!!!!!, das 1000 Bilder, Sounds, Hilfedateien haben könnte, und wir müssen alles in einen Ordner packen?

Ich bin kein Fan von Unordnung in Verzeichnissen, um viel Qualität zu schreiben, muss nicht nur im Kopf, sondern auch überall Ordnung sein ...

Teilweise Korrektur für Objekte, die zur Kompilierzeit eingebunden werden und nicht als benannte Objekte in den Code eingehen.

Das Problem ist, dass es innerhalb der EX-Datei eine physische Grenze von 64 Zeichen für benannte Ressourcen gibt.
 
Artyom Trishkin:

Hallo von fxsaber:

Der obige Code basiert auf einem Compiler-Fehler

void f(       int  ) { Print( 1 ); } //(1)
void f( const int& ) { Print( 2 ); } //(2)
void OnStart()
{
    int i = 0;
    f( i ); //нормально ???
}

Ergebnis: 1... und warum nicht 2?

Weil C++ beim Kompilieren einen Fehler meldet, weil beide Funktionen offensichtlich passen und außerdem die aktuelle Reihenfolge in MQL einen expliziten Aufruf von Funktion (2) gar nicht zulässt

Wenn dieser Fehler behoben wird, ist der betreffende Code größtenteils unbrauchbar.

 

Kompilierungsfehler: Fehler bei der Baumoptimierung

class A {
public:
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart() { g()().f(); }
 
Renat Fatkhullin:
Wir werden teilweise Objekte korrigieren, die zur Kompilierzeit eingebunden werden und nicht als benanntes Objekt in den Code gelangen.

Der Punkt ist, dass es eine physische Begrenzung von 64 Zeichen für benannte Ressourcen innerhalb der EX-Datei gibt.

In den Produktbeschreibungen ist nur sehr wenig Platz vorhanden.

3600 Zeichen sind zu wenig für große und seriöse Programme.

Ich denke, viele Menschen werden mir zustimmen.

Für die Beschreibung von Programmen benötigen Sie nicht weniger als 5000 bis 10000 Zeichen. Oder zumindest eine Registerkarte mit dem Namen der Programmeinstellungen

Ein Moderator kann jederzeit darum bitten, das Wasser zu entfernen.

Jetzt schreibe ich eine Programmbeschreibung, ich habe alle 3600 Zeichen nur für die Beschreibung der Einstellungen verwendet und nicht einmal die Hälfte der Funktionen beschrieben...
Grund der Beschwerde: