
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
En esencia, todos los algoritmos son iguales. Todos modifican la matriz elemento por elemento, y todos se esfuerzan por la variante de Fedoseev, porque no tiene nada innecesario.
Sólo que en mi caso, se hace en bloques usando ArrayCopy, por lo que hay una ventaja de velocidad.
¿Y qué pasa con Pyotr? ¿Todo el mundo se ha "desgarrado"? Nadie ha puesto su código en el corrector. Me pregunto cómo, y hasta qué punto, dejó boquiabiertos a todos en el tablero.
He pensado en las razones y he corregido dos líneas para eliminar un tercio de los elementos, no el 0,1%.
Conclusión: calcular direcciones en un array con una distancia arbitraria entre sus números sigue siendo peor que procesar elementos en una fila en un paso determinado, más aún en el paso 1, el compilador puede optimizarlo.
Oh, ya veo lo que quieres decir. Por alguna razón se me pasó esta frase
Sí, claro que está claro, pero aun así, aunque tenga que tirar uno de cada tres elementos (entonces ArrayCopy deja de funcionarme y las ganancias desaparecen) la imagen es diferente:
La variante de Pavlov realmente no funciona, pero también tienes sumas de verificación correctas e incorrectas.
¿Y qué pasa con Peter? ¿Los has destrozado todos? Nadie introdujo su código en el comprobador. Es interesante cómo y hasta qué punto ha sorprendido a todo el mundo en el tablero.
Sigo sin entender su fuga. Todavía no ha proporcionado una función preparada. Y si lo termino por él, me acusará de nuevo de rehacerlo todo. ))
Sigo sin entender su fuga. Todavía no ha proporcionado una función preparada. Y si lo termino por él, me acusará de nuevo de rehacerlo todo. ))
Pues bien, viendo su código desde un teléfono móvil me dio la impresión de que escribe de forma "directa". Por eso no proporcionó la función: lo hace todo seguido. Y su script no es una función sino un código directo. Por supuesto, un guión así puede no implicar una función, pero... Creo que le falta goto para sus vuelos :)
Pero eso es sólo mi sensación.
Corregida la variante de Pavlov.
Tus valores son extraños. ¿Quizás has ejecutado el script después de perfilar o depurar sin recompilar el código?
Así es como funciona para mí:
Y en tu variante da una suma de comprobación errónea. La creación de una matriz adicional no es nada rentable, al contrario, ralentiza el proceso y consume recursos adicionales.
Corregido.
Lo he ejecutado un par de veces, los resultados están colgados - el ordenador está muy ocupado, no estará libre hasta el sábado. Será mejor que lo compruebes con otra persona. Pero la suma de comprobación ahora coincide. Para valores innecesarios muy dispersos (0,1%)
2018.11.13 21:35:16.888 del_2 (GBPUSD.m,H1) opción Pastushak: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 418662 microsegundos
2018.11.13 21:35:16.898 del_2 (GBPUSD.m,H1) variante Korotky: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 10683 microsegundos
2018.11.13 21:35:16.918 del_2 (GBPUSD.m,H1) variante Fedoseev: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 9740 microsegundos
2018.11.13 21:35:16.928 del_2 (GBPUSD.m,H1) variante Semko: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 4691 microsegundos
2018.11.13 21:35:16.944 del_2 (GBPUSD.m,H1) variante Pavlov: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 12512 microsegundos
2018.11.13 21:35:16.957 del_2 (GBPUSD.m,H1) variante Nikitin: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 10720 microsegundos
2018.11.13 21:35:16.978 del_2 (GBPUSD.m,H1) variante Vladimir: Checksum = 497057781; elementos - 998984; tiempo de ejecución = 17197 microsegundos
para un tercio
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) variante Pastushak: Checksum = 668222; elementos - 667065; tiempo de ejecución = 65732 microsegundos
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) variante Korotky: Checksum = 668222; elementos - 667065; tiempo de ejecución = 4757 microsegundos
2018.11.13 21:57:17.848 del_2 (GBPUSD.m,H1) variante Fedoseev: Checksum = 668222; elementos - 667065; tiempo de ejecución = 4815 microsegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Semko: Checksum = 668222; elementos - 667065; tiempo de ejecución = 5812 microsegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Pavlov: Checksum = 1001157; elementos - 667065; tiempo de ejecución = 0 microsegundos
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) variante Nikitin: Checksum = 668222; elementos - 667065; tiempo de ejecución = 4749 microsegundos
2018.11.13 21:57:17.868 del_2 (GBPUSD.m,H1) variante Vladimir: Checksum = 668222; elementos - 667065; tiempo de ejecución = 9814 microsegundos
Pavlov se ha estrellado de nuevo.
Mi conclusión sobre la aceleración de los bucles for es probablemente incorrecta para los lenguajes MQL.
Y la creación de un array adicional debería reducir la duración de la propia transacción al eliminar los superfluos, manteniendo el array sin cambios hasta el momento necesario de su inicio. Hasta ahora no se ha hablado de la integridad de los datos.
¿Qué pasa con Peter? ¿Ha "destrozado" a todo el mundo? Nadie ha puesto su código en el corrector. Me pregunto cómo, y hasta qué punto, dejó boquiabiertos a todos en el tablero.
Pero he conseguido hacerme con la versión de Peter.
Es bastante compacto e incluso funciona correctamente. Felicidades a Pyotr.
Pero en términos de velocidad se sitúa en segundo lugar desde el final. O el primer puesto desde el final si no se cuenta la versión original, completamente inadecuada para la velocidad, del dueño de este hilo.
:-) si no intentas mantener el orden, el tiempo es O(1) , el número total de pasos de todos los bucles= tamaño del array
demasiado perezoso para codificar :-)
1. Busca los 3 primeros de izquierda a derecha.
2. si se encuentra, entonces busca un no-tres de derecha a izquierda, cópialo en el lugar del 3.
continuar hasta que 1,2 se hayan cruzado, recortar la matriz por el número de copias.
idealmente, es exactamente 1/2 de la"ordenación de burbujas" :-) si, en lugar de copiar, haces un intercambio, la salida será un array parcialmente ordenado (los 3 tercios movidos a la derecha)
Más refinamiento:
Lo siento, dicen que eres un buen vendedor, pero un programador... incluso peor que yo.
1. La variable entera interna no está inicializada, por lo que será cero, pero no está garantizado. En el bucle, el desplazamiento hacia atrás no se producirá (la primera vez) por dos razones a la vez: adivina cuál.
2. (lo más importante) primero se desplazan los elementos del array, luego se incrementa el valor de la variable eliminada, y luego se produce un bucle y el siguiente desplazamiento se produce uno más de lo necesario. En otras palabras, su código avalará el array original.
No hay elementos extra en el array:
El array tiene todos los elementos innecesarios:
Lo siento, dicen que eres un buen vendedor, pero un programador... incluso peor que yo.
Alexei, estás matando a un joven talento...
este comercializador lleva 5 años sin poder empezar a vender...y dices que es aún peor como programador :-)