Discusión sobre el artículo "Recetas de MQL5 - implementamos el array asociativo o el diccionario para el acceso rápido a los datos" - página 2

 
Un artículo muy bueno e interesante. Gracias.
[Eliminado]  
buen articulo y ayuda al novato paso
 

Pido disculpas.

Estoy aprendiendo sobre listas y creación de objetos.

Cuando empecé a probar e indagar en tu código encontré un pequeño error, pero puedo estar equivocado.

Al medir la velocidad comparando tu librería y la estándar, quién es más rápido, dices una cosa en la descripción, pero muestras otra en el gráfico. ¿No te diste cuenta o estoy leyendo mal el gráfico?

P.P. 4.3.

 
BmC:

Pido disculpas.

Estoy aprendiendo sobre listas y creación de objetos.

Cuando empecé a probar e indagar en tu código encontré un pequeño error, pero puedo estar equivocado.

Al medir la velocidad comparando tu librería y la estándar, quién es más rápido, dices una cosa en la descripción, pero muestras otra en el gráfico. ¿No te diste cuenta o estoy leyendo mal el gráfico?

P.P. 4.3.

Al principio escribí que efectivamente es un error, pero luego miré el gráfico con más atención: no, todo es correcto. El eje y muestra el tiempo, cuanto más largo es - más lentamente funciona la adición de elementos. El gráfico muestra que añadir un millón de elementos a CArrayObj tarda 5 segundos, mientras que añadir el mismo número de elementos a CDictionary tarda 1 segundo. Es decir, específicamente en tareas con gran adición secuencial de elementos, el modelo de reasignación de memoria de CDictionary gana en comparación con el modelo de reasignación estándar en CArrayObj, que era necesario mostrar.

 
Vasiliy Sokolov:

Al principio escribí que se trataba realmente de un error, pero luego miré el gráfico con más detenimiento: no, todo es correcto. El eje y muestra el tiempo, cuanto más largo es, más lento se tarda en añadir un elemento. El gráfico muestra que añadir un millón de elementos a CArrayObj tarda 5 segundos, mientras que añadir el mismo número de elementos a CDictionary tarda 1 segundo. Es decir, específicamente en tareas con gran adición secuencial de elementos, el modelo de reasignación de memoria de CDictionary gana en comparación con el modelo de reasignación estándar en CArrayObj, que era necesario mostrar.

No, sigue siendo un error. pero no importa para mí, pero para otros lectores, sí. que también lo entenderán como yo desde el principio. Habría que escribirlo con mucha precisión porque lleva a un equívoco lejano. ))))

quote: Utiliza la macro TEST_ARRAY. Si está definida, la prueba realiza operaciones sobre CArrayObj, si no - sobre CDictionary. El primer test para añadir nuevos elementos gana sobre CDictionary.Su modelo de reasignación de memoria era mejor en este caso particular:

MUST HAVE: Utiliza la macro TEST_ARRAY. Si está "NO" definida, la prueba realiza operaciones sobre CArrayObj, si está "SÍ" realiza operaciones sobre CDictionary. La primera prueba sobre la adición de nuevos elementos gana sobre CDictionary.Su modelo de reasignación de memoria era mejor en este caso particular:

Todo el error está directamente en el código desde el principio va a llenar la lista a través de CDictionary , y luego si no se define macro TEST_ARRAY va CArrayObj aquí es donde se produjo el error . Es de la fatiga de trabajar en un material.

PERO MUY BUENO Y CONSUME MUCHO TIEMPO. ME AYUDÓ MUCHO A ENTENDER EN PUNTEROS Y CREACIÓN DE OBJETOS. FUE MUY DIFICIL ENTRAR EN EL. Y LO NECESITAS EN POCO TIEMPO......

 

BmC:

HE TENIDO MUCHA AYUDA PARA AVERIGUAR EN PUNTEROS Y CREACIÓN DE OBJETOS.

En MQL4 y MQL5, no hay punteros, pero los descriptores, que es una compota completamente diferente.
 
Alexey Volchanskiy:
В MQL4 и MQL5 нет указателей, есть дескрипторы, это совсем другой компот.
Alexey Volchanskiy
:

En MQL4 y MQL5 no hay punteros, hay descriptores, esto es una compota completamente diferente.

¿Intentas hacerte el listo o solo quieres obtener una calificación? Si no tienes tiempo para leer el articulo y lo que he escrito, te pido que no lo hagas mas, sino escribe a los creadores de MetaQuotes Software Corp. lo que tienen o lo que deberia ser, pero no aqui a los listos. Para aquellos que lo quieren en el futuro como usted: www.mql5.com/ru/docs/basis/types/object_pointers. 

Usted debe tener una calificación sólo en tales declaraciones estúpidas. Entonces, ¿qué haces escribiendo tonterías 3000 veces? Si no tienes nada que hacer, leer la referencia MQL de nuevo. Si necesita calificación en declaraciones estúpidas tanto, a continuación, escribir a los creadores de sus ideas estúpidas, que reciben dinero para usted allí.

Si no entendiste lo que quise decir con esto, entonces por ejemplo, te informo que todavía puedes escribir ideas estúpidas a los creadores: " class="linkator">"Descriptores de objetos"".

Luego das la razón: "Como soy tan estúpido y quiero que todas mis estupideces se conviertan en afirmaciones verdaderas y razonables, sálvame "creador".

Si yo fuera el "creador", te aconsejaría que consiguieras una flor de la "flor de siete flores". Pero no te importa, ya has escrito tres afirmaciones. 3093+3=3096. Te he ayudado ahora ayúdame a no escribir más aquí.

Llevo mucho tiempo en el foro y tus afirmaciones veo que son como siempre estúpidas y constantes. Tu sobre el tema escribes siempre a retazos y siempre corriges a todo el mundo, aquí tales afirmaciones estúpidas. Yo soy por qué estás tan enojado, porque yo también soy el mismo usuario principiante que sube el foro para reponer los conocimientos y cuando un "gurú" como con 3000 de calificación, algo le escribe escuchar. Y ÉL no es más que un tonto que se ha puesto como meta marcarse un rating. Ni siquiera piensa que su declaración dirige al lector de la rama en la otra dirección.

Le pido disculpas de nuevo. Si vuelves a quedar atrapado en mis respuestas, insistiré en bloquearte y perderás tu calificación estúpidamente anotada. Sobre todo para demostrar tu estupidez al moderador no vale de nada, tus respuestas son siempre cortas sobre el tema y estúpidas.

[Eliminado]  

Ya es septiembre, y esta clase no está en la biblioteca estándar:)

Por cierto, una pregunta sobre el código de la propia clase. ¿Qué sentido tenía definirla al final del código?

#define  FOREACH_DICT(dict) for(CObject* node = (dict).GetFirstNode(); node != NULL; node = (dict).GetNextNode())
porque ni siquiera se utiliza en ninguna parte de los ejemplos...
 
Konstantin Karpov:

Ya es septiembre, y esta clase no está en la biblioteca estándar:)

Por cierto, una pregunta sobre el código de la propia clase. ¿Qué sentido tenía definirla al final del código?

porque ni siquiera se utiliza en ninguna parte de los ejemplos...
Sí se utiliza. En el párrafo 5.3: "Métodos para enumerar elementos en el diccionario". La enumeración del diccionario se parece bastante a la enumeración de listas, por lo que la operación de enumeración no es del todo estándar y el contenido de for difiere del contenido de la enumeración clásica de arrays. Para facilitarnos la vida a nosotros y a los usuarios y no tener que recordar penosamente la enumeración de nodos, se introdujo esta macro.
 
Llamamiento al Sr. EA