Errori, bug, domande - pagina 2163

 
Комбинатор:


Credo che tu sia molto più bravo nelle ottimizzazioni, ma dalla prospettiva di un utente comune sembra strano - affermi che il compilatore MQL genera codice paragonabile al C++, ma poi si scopre che gli array in MQL non sono affatto veloci.

Un linguaggio gestito significa chiaramente che gli array devono essere strettamente controllati. Senza questo, la lingua non può essere sicura.

Per gli array statici, il controllo è più semplice e può essere parzialmente semplificato nella fase di ottimizzazione del codice. Per gli array dinamici c'è più controllo ed è difficile da semplificare.

Il codice è generato al livello qualitativo del C++, ma c'è certamente un overhead nelle cose gestite. La matematica, i loop e tutto il resto è a livello di C++.

 
Комбинатор:

l'indice dell'array si riduce nel migliore dei casi anche a un singolo comando diretto dell'assemblatore, quindi la domanda rimane

Nel linguaggio gestito solo in array statico con indicizzazione costante. Cioè, se l'ottimizzatore è sicuro al 100% che non c'è bisogno di controllare i limiti e la disponibilità del buffer.

Se le condizioni sono violate, appare il controllo buffer and bounds[s].

Questa è una conoscenza di base da avere quando si programma.

 
Vladimir Pastushak:
Se una funzione sovraccaricata ha un enumToString allora c'è un problema quando la si chiama per un intero...

Ho prestato attenzione a questo https://www.mql5.com/ru/forum/1111/page1297#comment_1382986

Ma non hanno cambiato nulla, quindi ::EnumToString nei template è inutile in molti casi

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

Continuando a esplorare progetti e inciampando in

#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

Perché abbiamo bisogno di progetti se siamo limitati?

Un progetto è PROJECT!!!!! che potrebbe avere 1000 immagini, suoni, file di aiuto e dobbiamo mettere tutto in una cartella?

Non sono un fan del casino nelle directory, per scrivere un sacco di qualità dovrebbe essere in ordine non solo nella tua testa, ma anche ovunque ...



 
A100:

Stavo prestando attenzione a questo https://www.mql5.com/ru/forum/1111/page1297#comment_1382986

Ma non è stato cambiato nulla, quindi ::EnumToString nei template è inutile in molti casi

Ciao da 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 )); //"ошибка компиляции"
}
 
Комбинатор:

Quindi prendere un elemento per indice da un semplice array dovrebbe essere un'operazione molto veloce, no?

Ma il non recupero è ancora più veloce. In qualche modo ho notato che se uso numeri in virgola mobile invece di interi, il mio programma funziona una volta e mezzo più velocemente. L'ho spiegato a me stesso con il fatto che il mio coprocessore FPU era per lo più inattivo, per lo più usando interi. Nel mio caso puoi anche tenerne conto: SQRT viene eseguito in FPU, l'ALU libera il tempo, iniziano a lavorare in parallelo in larga misura.
 
Vladimir Pastushak:

Continuando a esplorare progetti e inciampando in

#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

Perché abbiamo bisogno di progetti se siamo limitati?

Un progetto è PROJECT!!!!! che può avere 1000 immagini, suoni, file di aiuto e dobbiamo mettere tutto in una cartella?

Non sono un fan del casino nelle directory, per scrivere un sacco di qualità dovrebbe essere in ordine non solo nella tua testa, ma anche ovunque ...

Corregge parzialmente gli oggetti che sono inclusi in fase di compilazione e non vanno nel codice come oggetti con nome.

Il fatto è che all'interno del file EX c'è un limite fisico di 64 caratteri per i nomi delle risorse.
 
Artyom Trishkin:

Ciao da fxsaber:

Il codice di cui sopra è basato su un difetto del compilatore

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

Risultato: 1... e perché non 2?

Perché il C++ segnala un errore durante la compilazione, perché entrambe le funzioni ovviamente si adattano e inoltre l'ordine attuale in MQL non permette di chiamare la funzione (2) esplicitamente a tutti

Se questo errore viene eliminato, il codice dato diventerà inutilizzabile per la maggior parte

 

Errore di compilazione: errore di ottimizzazione dell'albero

class A {
public:
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart() { g()().f(); }
 
Renat Fatkhullin:
Correggeremo parzialmente gli oggetti che sono inclusi al momento della compilazione e non entrano nel codice come un oggetto con nome.

Il punto è che c'è una limitazione fisica di 64 caratteri per le risorse nominate all'interno del file EX.

C'è poco spazio nelle descrizioni dei prodotti.

3600 caratteri sono troppo pochi per programmi grandi e seri.

Penso che molte persone saranno d'accordo con me.

Per descrivere i programmi avete bisogno di non meno di 5000 - 10000 caratteri. O almeno una scheda con il nome delle impostazioni del programma

Un moderatore può sempre chiedere di rimuovere l'acqua.

Ora sto scrivendo una descrizione del programma, ho usato tutti i 3600 caratteri solo per la descrizione delle impostazioni e non ho descritto nemmeno la metà delle caratteristiche...