Errores, fallos, preguntas - página 2163

 
Комбинатор:


Creo que ustedes son mucho mejores en las optimizaciones, pero desde la perspectiva de un usuario común se ve extraño - ustedes afirman que el compilador MQL genera un código comparable al de C++, pero luego resulta que las matrices en MQL no son rápidas en absoluto.

Un lenguaje gestionado/administrado significa claramente que las matrices deben estar estrechamente controladas. Sin esto, la lengua no puede ser segura.

En el caso de las matrices estáticas, el control es más sencillo y puede simplificarse parcialmente en la fase de optimización del código. Para las matrices dinámicas hay más control y es difícil de simplificar.

El código se genera al nivel de calidad de C++, pero ciertamente hay una sobrecarga en las cosas administradas. Las matemáticas, los bucles y todo lo demás está al nivel de C++.

 
Комбинатор:

el índice de la matriz también se reduce, en el mejor de los casos, a un único comando directo del ensamblador, por lo que la pregunta sigue en pie

En lenguaje gestionado sólo en array estático con indexación constante. Es decir, si el optimizador está 100% seguro de que no es necesario comprobar los límites y la disponibilidad del búfer.

Si se violan las condiciones, aparece la comprobación del búfer y los límites.

Este es un conocimiento básico que hay que tener a la hora de programar.

 
Vladimir Pastushak:
Si una función sobrecargada tiene un enumToString entonces hay un problema al llamarla para un entero...

He estado prestando atención a este https://www.mql5.com/ru/forum/1111/page1297#comment_1382986

Pero no cambiaron nada, así que ::EnumToString en las plantillas es inútil en muchos casos

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

Seguir explorando proyectos y tropezar con

#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

¿Por qué necesitamos proyectos si estamos limitados?

Un proyecto es el PROYECTO !!!!! que podría tener 1000 imágenes, sonidos, archivos de ayuda y tenemos que poner todo en una carpeta?

No soy un fanático del desorden en los directorios, para escribir mucho la calidad debe estar en orden no sólo en su cabeza, sino también en todas partes ...



 
A100:

Estaba prestando atención a este https://www.mql5.com/ru/forum/1111/page1297#comment_1382986

Pero no se ha cambiado nada, por lo que ::EnumToString en las plantillas es inútil en muchos casos

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

Por tanto, tomar un elemento por índice de una matriz simple debería ser una operación muy rápida, ¿no?

Pero la no recuperación es aún más rápida. De alguna manera me he dado cuenta de que si utilizo números de punto flotante en lugar de enteros, mi programa funciona una vez y media más rápido. Me lo expliqué por el hecho de que mi coprocesador FPU estaba mayormente ocioso, utilizando sobre todo números enteros. En mi caso también se puede tener en cuenta: SQRT se ejecuta en FPU, ALU libera tiempo, empiezan a trabajar en paralelo en gran medida.
 
Vladimir Pastushak:

Seguir explorando proyectos y tropezar con

#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

¿Por qué necesitamos proyectos si estamos limitados?

Un proyecto es el PROYECTO !!!!! que podría tener 1000 imágenes, sonidos, archivos de ayuda y tenemos que poner todo en una carpeta?

No soy un fanático del desorden en los directorios, para escribir mucho la calidad debe estar en orden no sólo en su cabeza, sino también en todas partes ...

Corrige parcialmente los objetos que se incluyen en tiempo de compilación y no entran en el código como objetos con nombre.

La cuestión es que dentro del archivo EX hay un límite físico de 64 caracteres para los recursos con nombre.
 
Artyom Trishkin:

Hola de fxsaber:

El código anterior se basa en un fallo del compilador

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

Resultado: 1... ¿y por qué no 2?

Porque C++ informa de un error durante la compilación, porque ambas funciones obviamente encajan y además el orden actual en MQL no permite llamar a la función (2) explícitamente en absoluto

Si se elimina este error, el código dado será inoperante en su mayor parte

 

Error de compilación: error de optimización del árbol

class A {
public:
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart() { g()().f(); }
 
Renat Fatkhullin:
Corregiremos parcialmente los objetos, que se incluyen en tiempo de compilación y no entran en el código como un objeto con nombre.

La cuestión es que hay una limitación física de 64 caracteres para los recursos con nombre dentro del archivo EX.

Hay muy poco espacio en las descripciones de los productos.

3600 caracteres es demasiado poco para programas grandes y serios.

Creo que muchos estarán de acuerdo conmigo.

Para describir los programas se necesitan no menos de 5000 - 10000 caracteres. O al menos una pestaña con el nombre de la configuración del programa

Un moderador siempre puede pedir que se elimine el agua.

Ahora estoy escribiendo una descripción del programa, he utilizado los 3600 caracteres sólo para la descripción de los ajustes y ni siquiera he descrito la mitad de las características...