La funzione di scomporre il colore in sfumature. - pagina 8

 
Nikolai Semko:
Ho rimosso i perizomi dal tuo algoritmo. Era un mistero per me perché li hai usati. Guarda nel codice, come farei ad emettere il colore reale allora. Hai un mucchio di controlli inutili, usi funzioni come la tangente, l'ordinamento degli array, io solo +-*//. Mt4 è più lento, questo è comprensibile, ma non 30 volte più lento.
Ok, più tardi metterò il mio algoritmo sul 4 e vedremo. Perché usate proprio il 4? Per la GUI, 4 non va affatto bene. Non legge nemmeno le risorse. È molto più difficile convertire dal codice 4 al codice 5 che viceversa.

MT4 può essere 60 volte più lento. Controllate il tasso di riempimento dell 'int array su entrambe le piattaforme e vedete.

 
Nikolai Semko:
Ho rimosso il perizoma dal tuo algoritmo. Era un mistero per me il motivo per cui li hai usati. Guarda nel codice, come farei ad emettere il colore reale allora. Hai un mucchio di controlli inutili, usi funzioni come la tangente, l'ordinamento degli array, io solo +-*//. Mt4 è più lento, questo è comprensibile, ma non 30 volte più lento.
Ok, più tardi metterò il mio algoritmo sul 4 e vedremo. Perché usate proprio il 4? Per la GUI, 4 non va affatto bene. Non legge nemmeno le risorse. È molto più difficile modificare il codice da 4 a 5 che viceversa.

Per la GUI, 4 è molto buono. Ma non stiamo parlando di questo. Non divaghiamo.

 
Nikolai Semko:
Ho rimosso il perizoma dal tuo algoritmo. Era un mistero per me il motivo per cui li hai usati. Guarda nel codice, come farei ad emettere il colore reale allora. Hai un mucchio di controlli inutili, usi funzioni come la tangente, l'ordinamento degli array, io solo +-*//. Mt4 è più lento,

È chiaro che i perizomi possono essere omessi. Ho pensato che sarebbe stato più facile da usare. Che senso ha risparmiare microsecondi se la funzione viene chiamata una volta sola?

 
Nikolai Semko:
Hai un mucchio di controlli inutili, usi funzioni come la tangente, l'ordinamento degli array, mentre io uso solo +-*/.

Nikolai, prima di dire che ho qualcosa di sbagliato, assicuriamoci che il tuo algoritmo sia davvero più veloce e migliore. Metterò il mio algoritmo su MT5 e controllerò la velocità. E tu stampi una stampa della tua matrice e la confronti con i colori di Windows. (In questo caso, dovrete ancora usare il tipo stringa. Questo è uno dei motivi per cui l'ho usato. Era anche necessario per il confronto).

 
Реter Konow:

Nikolai, prima di dire che ho qualcosa di sbagliato, assicuriamoci che il tuo algoritmo sia davvero più veloce e migliore. Metterò il mio algoritmo su MT5 e controllerò la velocità. E tu stampi una stampa della tua matrice e la confronti con i colori di Windows. (In questo caso, dovrete ancora usare il tipo stringa. Questo è uno dei motivi per cui l'ho usato. Mi serviva anche per il confronto).

Il mio algoritmo sul 4 ha più di un vantaggio di 4 volte rispetto al tuo.

Ecco un ottimo esempio del perché non è saggio usare il 4.

In primo luogo, anche i semplici algoritmi con +/-* lavorano 5-7 volte più lentamente.

In secondo luogo, la mia funzione è passata immediatamente a 4 senza errori. Ho provato il tuo, ho fatto un sacco di correzioni, ma il codice ha prodotto valori completamente diversi, c'erano delle strisce di colore. Provate voi stessi, se non mi credete.

Il punto è che stai rubando il tuo tempo usando il 4. Prima o poi dovrai rifare il codice da 4 a 5. E se siete passati completamente alla 5, potreste trovarvi tra due o tre anni a fare già la procedura inversa, perché il 4-core non sarà così richiesto come ora, e anche se sarà richiesto, lo sforzo speso per rifare il codice da 5 a 4 è sproporzionato rispetto al contrario.

File:
 
Реter Konow:

Nikolai, prima di dire che ho qualcosa di sbagliato, assicuriamoci che il tuo algoritmo sia davvero più veloce e migliore. Metterò il mio algoritmo su MT5 e controllerò la velocità. E tu stampi una stampa della tua matrice e la confronti con i colori di Windows. (In questo caso, dovrete ancora usare il tipo stringa. Questo è uno dei motivi per cui l'ho usato. Era anche necessario per il confronto).

E comunque con la mia funzione funziona senza questi inconvenienti:

Quindi c'è un bug nel vostro algoritmo. Può capirlo da solo.

 
Nikolai Semko:

Il mio algoritmo su 4 ha più di 4 volte il guadagno del tuo.

Ecco un ottimo esempio del perché non è saggio usare il 4.

Innanzitutto, anche i semplici algoritmi +/-* sono 5-7 volte più lenti.

In secondo luogo, la mia funzione è passata immediatamente a 4 senza errori. Ho provato il tuo, ho fatto un sacco di correzioni, ma il codice ha prodotto valori completamente diversi, c'erano delle strisce di colore. Provate voi stessi, se non mi credete.

Il punto è che stai rubando il tuo tempo usando il 4. Prima o poi dovrete rifare il codice dal 4 al 5. Ma se foste passati completamente alla 5, probabilmente non dovreste fare la procedura inversa tra un paio d'anni perché la 4 non sarà così richiesta come lo è ora e anche se lo fosse, lo sforzo speso per convertire il codice dalla 5 alla 4 sarebbe sproporzionato allo sforzo speso per l'inverso.

Nicolai, non facciamoci distrarre da argomenti estranei. La conversazione riguarda la correttezza degli algoritmi e il confronto della loro velocità.

  1. Mostra che il tuo algoritmo funziona correttamente stampando i colori da una matrice e confrontandoli con i colori nella palette di Windows.
  2. Per ora tradurrò il mio algoritmo su MT5 e riporterò i risultati.

 
Реter Konow:

Nikolai, prima di dire che ho qualcosa di sbagliato, assicuriamoci che il tuo algoritmo sia davvero più veloce e migliore. Metterò il mio algoritmo su MT5 e controllerò la velocità. E tu stampi una stampa della tua matrice e la confronti con i colori di Windows. (In questo caso, dovrete ancora usare il tipo stringa. Questo è uno dei motivi per cui l'ho usato. Era anche necessario per il confronto).

Per emettere il tipo di stringa non è necessario metterlo nel corpo della funzione stessa, ma piuttosto convertire i valori in quel tipo al momento della stampa.

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:

Per emettere un tipo di stringa, non è necessario metterlo nel corpo della funzione stessa, ma piuttosto tradurre i valori in quel tipo al momento della stampa.

Sei di nuovo distratto da altri argomenti. Non è una questione di come emettere il tipo di stringa. È lo stile personale di ognuno.

Hai cambiato il mio codice e hai aggiunto molto del tuo codice. Questo ha cambiato notevolmente il risultato. Sto traducendo tutto in MT5 e cerco di capire quello che hai scritto qui.

Il punto è che nel confronto con la tavolozza dei colori ho tutto chiaro. Ma quando lo si visualizza sullo schermo con il vostro algoritmo, ho un problema. Sto cercando di capire dove sia il problema.

 
Реter Konow:

Sei di nuovo distratto da altri argomenti. Non è una questione di stringhe di tipo di uscita. È lo stile personale di ognuno.

Hai cambiato il mio codice e hai aggiunto molto del tuo codice. Questo ha cambiato notevolmente il risultato. Sto traducendo tutto in MT5 e cerco di capire quello che hai scritto qui.

Il punto è che nel confronto con la tavolozza dei colori ho tutto chiaro. Ma quando lo si visualizza sullo schermo con il vostro algoritmo, ho un problema. Sto cercando di capire dove sta il problema.

Peter, il problema è che hai postato una funzione sul forum perché tutti possano vedere e applicare la decomposizione dei colori. Ma questa funzione non genera l'array di colori necessario, genera solo un array di stringhe adatto solo a Print invece di visualizzare il proprio gradiente sullo schermo. È un pig in a poke e nessun rispetto per gli altri. Quindi traducetelo voi stessi, se qualcuno ne ha bisogno.

Motivazione: