La función de descomponer el color en matices. - página 8

 
Nikolai Semko:
He quitado las correas de tu algoritmo. Era un misterio para mí por qué los usaba. Mira en el código, como saldría el color real entonces. Tienes un montón de comprobaciones innecesarias, usas funciones como la tangente, la ordenación de arrays, yo solo +-*//. Mt4 es más lento, es comprensible, pero no 30 veces más lento.
Vale, luego meteré mi algoritmo en el 4 y veremos. ¿Por qué usas el 4? Para la interfaz gráfica de usuario, el 4 no es bueno en absoluto. Ni siquiera lee los recursos. De 4 a 5 es mucho más difícil convertir el código que a la inversa.

MT4 puede ser 60 veces más lento. Comprueba la tasa de llenado de la matriz int en ambas plataformas y verás.

 
Nikolai Semko:
He quitado el tanga de tu algoritmo. Era un misterio para mí por qué los usaba. Mira en el código, como saldría el color real entonces. Tienes un montón de comprobaciones innecesarias, usas funciones como la tangente, la ordenación de arrays, yo solo +-*//. Mt4 es más lento, es comprensible, pero no 30 veces más lento.
Vale, luego meteré mi algoritmo en el 4 y veremos. ¿Por qué usas el 4? Para la interfaz gráfica de usuario, el 4 no sirve para nada. Ni siquiera lee los recursos. Es mucho más difícil pasar del código 4 al 5 que a la inversa.

Para la interfaz gráfica de usuario, el 4 es muy bueno. Pero no estamos hablando de eso. No nos desviemos.

 
Nikolai Semko:
He quitado el tanga de tu algoritmo. Era un misterio para mí por qué los usaba. Mira en el código, como saldría el color real entonces. Tienes un montón de comprobaciones innecesarias, usas funciones como la tangente, la ordenación de arrays, yo solo +-*//. Mt4 es más lento,

Está claro que se pueden omitir las correas. Pensé que sería más fácil de usar. ¿De qué sirve ahorrar microsegundos si la función se llama una vez?

 
Nikolai Semko:
Tienes un montón de comprobaciones innecesarias, usas funciones como la tangente, la ordenación de arrays, mientras que yo sólo uso +-*/.

Nikolai, antes de que digas que tengo algo mal, asegurémonos de que tu algoritmo es efectivamente más rápido y mejor. Pondré mi algoritmo en MT5 y comprobaré la velocidad. E imprimes una impresión de tu matriz y la comparas con los colores de Windows. (En este caso, todavía tendrá que utilizar el tipo de cadena. Esa es una de las razones por las que lo usé. También era necesario a efectos de comparación).

 
Реter Konow:

Nikolai, antes de que digas que tengo algo mal, asegurémonos de que tu algoritmo es efectivamente más rápido y mejor. Pondré mi algoritmo en MT5 y comprobaré la velocidad. E imprimes una impresión de tu matriz y la comparas con los colores de Windows. (En este caso, todavía tendrá que utilizar el tipo de cadena. Esa es una de las razones por las que lo usé. También lo necesitaba para comparar).

Mi algoritmo en el 4 tiene más de 4 veces de ventaja sobre el tuyo.

Este es un ejemplo de por qué no es prudente usar el 4.

En primer lugar, incluso los algoritmos sencillos con +/-* funcionan entre 5 y 7 veces más lentos.

En segundo lugar, mi función pasó inmediatamente a 4 sin errores. Probé el tuyo, hice un montón de correcciones, pero el código produjo valores completamente diferentes, había algunas rayas de color. Pruébalo tú mismo, si no me crees.

La cuestión es que te estás robando el tiempo al usar el 4. Tarde o temprano tendrás que rehacer el código del 4 al 5. Y si cambias por completo a 5, puede que dentro de dos o tres años tengas que hacer ya el procedimiento inverso, porque el de 4 núcleos no tendrá tanta demanda como ahora, y aunque la tenga, el esfuerzo que se gasta en rehacer el código de 5 a 4 es desproporcionado respecto al inverso.

Archivos adjuntos:
 
Реter Konow:

Nikolai, antes de que digas que tengo algo mal, asegurémonos de que tu algoritmo es efectivamente más rápido y mejor. Pondré mi algoritmo en MT5 y comprobaré la velocidad. E imprimes una impresión de tu matriz y la comparas con los colores de Windows. (En este caso, todavía tendrá que utilizar el tipo de cadena. Esa es una de las razones por las que lo usé. También era necesario para la comparación).

Y por cierto con mi función funciona sin esos fallos:

Así que hay un error en su algoritmo. Puedes descubrirlo por ti mismo.

 
Nikolai Semko:

Mi algoritmo en 4 tiene más de 4 veces la ganancia del tuyo.

Este es un ejemplo de por qué no es prudente usar el 4.

En primer lugar, incluso los algoritmos simples de +/-* son entre 5 y 7 veces más lentos.

En segundo lugar, mi función pasó inmediatamente a 4 sin errores. Probé el tuyo, hice un montón de correcciones, pero el código produjo valores completamente diferentes, había algunas rayas de color. Pruébalo tú mismo, si no me crees.

La cuestión es que te estás robando el tiempo al usar el 4. Tarde o temprano tendrás que rehacer el código del 4 al 5. Pero si se cambiara completamente a 5, probablemente no se tendría que hacer el procedimiento inverso en un par de años, porque 4 no tendrá tanta demanda como ahora e incluso si la tuviera, el esfuerzo dedicado a convertir el código de 5 a 4 sería desproporcionado con respecto al esfuerzo dedicado a la inversa.

Nicolai, no nos distraigamos con temas extraños. La conversación versa sobre la corrección de los algoritmos y la comparación de su velocidad.

  1. Demuestra que tu algoritmo funciona correctamente imprimiendo los colores de una matriz y comparándolos con los colores de la paleta de Windows.
  2. Voy a traducir mi algoritmo a MT5 por ahora y reportar los resultados.

 
Реter Konow:

Nikolai, antes de que digas que tengo algo mal, asegurémonos de que tu algoritmo es efectivamente más rápido y mejor. Pondré mi algoritmo en MT5 y comprobaré la velocidad. E imprimes una impresión de tu matriz y la comparas con los colores de Windows. (En este caso, todavía tendrá que utilizar el tipo de cadena. Esa es una de las razones por las que lo usé. También era necesario para comparar).

Para dar salida al tipo de cadena no es necesario ponerlo en el cuerpo de la propia función, sino convertir los valores a este tipo en el momento de la impresión.

for (int l=0;l<256;l++) {Col.clr=Gradient[l]; Print("RGB = " + string(Col.c[2])+", "+string(Col.c[1])+", "+string(Col.c[0]));}
 
Nikolai Semko:

Para dar salida a un tipo de cadena, no es necesario ponerlo en el cuerpo de la propia función, sino traducir los valores a ese tipo en el momento de la impresión.

Vuelve a distraerse con otros temas. La cuestión no es cómo dar salida al tipo de cadena. Es el estilo personal de cada uno.

Has cambiado mi código y has añadido un montón de código propio. Esto ha cambiado el resultado considerablemente. Estoy traduciendo todo a MT5 y tratando de entender lo que has escrito aquí.

El caso es que al comparar con la paleta de colores lo tengo todo claro. Pero al visualizarlo en la pantalla con su algoritmo, tengo un problema. Estoy tratando de averiguar dónde está el problema.

 
Реter Konow:

Vuelve a distraerse con otros temas. No es una cuestión de cadenas de tipo de salida. Es el estilo personal de cada uno.

Has cambiado mi código y has añadido un montón de código propio. Esto ha cambiado el resultado considerablemente. Estoy traduciendo todo a MT5 y tratando de entender lo que has escrito aquí.

El caso es que al comparar con la paleta de colores lo tengo todo claro. Pero al visualizarlo en la pantalla con su algoritmo, tengo un problema. Estoy tratando de averiguar dónde está el problema.

Pedro, la cuestión es que has puesto una función en el foro para que todo el mundo la vea y aplique la descomposición del color. Pero esta función no genera la matriz de colores necesaria, sino que sólo genera una matriz de cadenas adecuada sólo para la impresión en lugar de mostrar su propio gradiente en la pantalla. Es un cerdo en un charco y no respeta a los demás. Así que tradúzcalo usted mismo, si alguien lo necesita.

Razón de la queja: