Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
.
Ecco il video che ho promesso di pubblicare. La qualità dell'immagine è scarsa, ma non impedisce di vedere i ritardi di risposta.
In effetti, c'è meno ritardo nel terminale. Quando il registratore è acceso, tutto è due volte più lento. Anche il processore carica molto di più.
Quindi, non è possibile avere un'idea completamente oggettiva della velocità di reazione da questo video, ma mostra chiaramente un modello tra la frequenza di aggiornamento della finestra e la sua dimensione.
(Ecco perché ho fatto diverse finestre di diverse dimensioni).
Penso di aver trovato la ragione esatta del rallentamento della risposta dell'immagine. È la chiamata costante della funzione ColorToARGB(). Ad ogni evento e ad ogni pixel chiamo questa funzione. Invece di calcolare i colori una volta e usarli già pronti, li ricalcolo continuamente.
Credo che questo sia il punto.
P.S. Ho dimenticato di aggiungere che il numero totale di oggetti di tutte le finestre è 35.
.
Ecco il video che ho promesso di pubblicare. La qualità dell'immagine è scarsa, ma non impedisce di vedere i ritardi di risposta.
In effetti, c'è meno ritardo nel terminale. Quando il registratore è acceso, tutto è due volte più lento. Anche il processore carica molto di più.
Pertanto, non è possibile avere un'idea completamente oggettiva della velocità di reazione da questo video, ma posso vedere chiaramente un modello tra la frequenza di aggiornamento della finestra e la dimensione della finestra.
(Ecco perché ho fatto diverse finestre di diverse dimensioni).
Penso di aver trovato la ragione esatta del rallentamento della risposta dell'immagine. È la chiamata costante della funzione ColorToARGB(). Ad ogni evento e ad ogni pixel chiamo questa funzione. Invece di calcolare i colori una volta e usarli già pronti, li ricalcolo continuamente.
Credo che questo sia il punto.
P.S. Ho dimenticato di aggiungere che il numero totale di oggetti di tutte le finestre è 35.
È possibile dare un'occhiata al codice sorgente? Per me, per la mia esperienza.
È realistico accelerare il rendering in Canvas con OpenCL?
Sì. OCL ha la capacità di parallelizzare l'elaborazione + la capacità di operare sui vettori - questo accelera il processo di rendering/sovrapposizione.
Scopri di più sull'uso dei vettori nell'articolo di Mathemat https://www.mql5.com/ru/articles/407
Sì. OCL ha la possibilità di parallelizzare l'elaborazione + la possibilità di operare con i vettori - questo velocizza il processo di disegno/layering.
Leggi di più sull'uso dei vettori nell'articolo di Mathemat https://www.mql5.com/ru/articles/407
Avete confrontato la velocità di Erase() da CCanvas e il ciclo PixelSet() fatto in OpenCl? In teoria, con una buona accelerazione, si può fare del codice di disegno stupido senza cache dei risultati intermedi e altre complicazioni.
A proposito, mischiate gli strati usando questa formula?
Sì, la formula è da wikipedia, per ogni componente di colore: Risultato = Sfondo + (Primo piano - Sfondo) * Alfa;
A proposito, c'è un problema con Erase in OCL. Non c'è un analogo di memset (a differenza di CUDA). Questo è il motivo per cui ora devo fare Erase nell'host e copiare l'array pulito tramite CLBufferWrite, che certamente non è più veloce della semplice Erase.
D'altra parte, ho provato a fare un array di compiti per le unità di lavoro scrivendo 1 punto nell'array ma non riesco a ricordare la velocità - sembrava essere più lento del metodo precedente.
E in OCL 1.2 c'èclEnqueueFillBuffer() che lo fa => secondo la sintassi MQL ci dovrebbe essere CLBufferFill()
Ma questo wrapper non è implementato (poiché la versione 1.1 è portata).
Sì, la formula è da wikipedia, per ogni componente di colore: Risultato = Sfondo + (Primo piano - Sfondo) * Alfa;
A proposito, c'è un problema con Erase in OCL. Non c'è un analogo di memset (a differenza di CUDA). Questo è il motivo per cui ora devo fare Erase nell'host e copiare l'array pulito tramite CLBufferWrite, che certamente non è più veloce della semplice Erase.
D'altra parte, ho provato a fare un array di compiti per le unità di lavoro scrivendo 1 punto nell'array ma non riesco a ricordare la velocità - sembrava essere più lento del metodo precedente.
E in OCL 1.2 c'èclEnqueueFillBuffer() che lo fa => secondo la sintassi MQL ci dovrebbe essere CLBufferFill()
Ma questo wrapper non è implementato (poiché la versione 1.1 è portata).
Nella vittima inglese, la formula è più interessante, si possono mescolare due strati traslucidi. È possibile fare un'interfaccia traslucida e altre cose carine.
Non ne ho avuto bisogno nel mio caso, tutto si fonde correttamente. Tutto ciò che sta sotto lo strato A può essere considerato il substrato, anche se lo strato B è sopra di esso, attraverso il quale il substrato stesso traspare.